func Types()

in go/showcase/pkg/showcase/part1/types.go [59:84]


func Types(_ statefun.Context, message statefun.Message) error {
	// All values, including messages and storage values, are handled via StateFun's type system.
	// StateFun ships built-in primitive types that handles de-/serialization of messages across
	// functions:
	if message.IsBool() {
		fmt.Printf("I've got a message with a boolean %v", message.AsBool())
	} else if message.IsInt32() {
		fmt.Printf("I've got a message with an int32 %v", message.AsInt32())
	} else if message.IsInt64() {
		fmt.Printf("I've got a message with an int64 %v", message.AsInt64())
	} else if message.IsFloat32() {
		fmt.Printf("I've got a message with a float32 %v", message.AsFloat32())
	} else if message.IsFloat64() {
		fmt.Printf("I've got a message with a float64 %v", message.AsFloat64())
	} else if message.IsString() {
		fmt.Printf("I've got a message with a string %v", message.AsString())
	} else if message.Is(UserLoginType) {
		var login UserLogin
		if err := message.As(UserLoginType, &login); err != nil {
			return fmt.Errorf("failed to deserialize user login: %w", err)
		}
		fmt.Printf("I've got a message with a login event %s", login)
	}

	return nil
}