Documentation ¶
Overview ¶
Package typeutil contains a collection of type-related utility functions.
Index ¶
- func Decode(msg string, data any) error
- func Deserialize(msg string, data any) error
- func Encode(data any) (string, error)
- func IsNil(v any) bool
- func IsZero[T any](v T) bool
- func Pointer[T any](v T) *T
- func Serialize(data any) (string, error)
- func Value[T any](p *T) T
- func Zero[T any](_ T) T
- type Float
- type Int
- type Number
- type Ordered
- type UInt
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Decode ¶
Decode decodes a message encoded with the Encode function to the provided data object. The value underlying data must be a pointer to the correct type for the next data item received.
Example ¶
package main import ( "fmt" "log" "github.com/Vonage/gosrvlib/pkg/typeutil" ) func main() { type TestData struct { Alpha string Beta int } var data TestData msg := "Kf+BAwEBCFRlc3REYXRhAf+CAAECAQVBbHBoYQEMAAEEQmV0YQEEAAAAD/+CAQZhYmMxMjMB/gLtAA==" err := typeutil.Decode(msg, &data) if err != nil { log.Fatal(err) } fmt.Println(data) }
Output: {abc123 -375}
func Deserialize ¶ added in v1.69.0
Deserialize decodes a message encoded with the Serialize function to the provided data object. The value underlying data must be a pointer to the correct type for the next data item received.
Example ¶
package main import ( "fmt" "log" "github.com/Vonage/gosrvlib/pkg/typeutil" ) func main() { type TestData struct { Alpha string Beta int } var data TestData msg := "eyJBbHBoYSI6ImFiYzEyMyIsIkJldGEiOi0zNzV9Cg==" err := typeutil.Deserialize(msg, &data) if err != nil { log.Fatal(err) } fmt.Println(data) }
Output: {abc123 -375}
func Encode ¶
Encode encodes the input data to gob/base64 format into a string.
Example ¶
package main import ( "fmt" "log" "github.com/Vonage/gosrvlib/pkg/typeutil" ) func main() { type TestData struct { Alpha string Beta int } data := &TestData{Alpha: "test_string", Beta: -9876} v, err := typeutil.Encode(data) if err != nil { log.Fatal(err) } fmt.Println(v) }
Output:
func IsNil ¶
IsNil returns true if the input value is nil.
Example ¶
package main import ( "fmt" "github.com/Vonage/gosrvlib/pkg/typeutil" ) func main() { var nilChan chan int v := typeutil.IsNil(nilChan) fmt.Println(v) }
Output: true
func IsZero ¶
IsZero returns true if the input value is equal to the zero instance (e.g. empty string, 0 int, nil pointer).
Example ¶
package main import ( "fmt" "github.com/Vonage/gosrvlib/pkg/typeutil" ) func main() { var zeroInt int v := typeutil.IsZero(zeroInt) fmt.Println(v) }
Output: true
func Pointer ¶ added in v1.75.1
func Pointer[T any](v T) *T
Pointer returns the address of v.
Example ¶
package main import ( "fmt" "github.com/Vonage/gosrvlib/pkg/typeutil" ) func main() { v := 5 p := typeutil.Pointer(v) fmt.Println(p) }
Output:
func Serialize ¶ added in v1.68.0
Serialize encodes the input data to JSON/base64 format into a string.
Example ¶
package main import ( "fmt" "log" "github.com/Vonage/gosrvlib/pkg/typeutil" ) func main() { type TestData struct { Alpha string Beta int } data := &TestData{Alpha: "test_string", Beta: -9876} v, err := typeutil.Serialize(data) if err != nil { log.Fatal(err) } fmt.Println(v) }
Output: eyJBbHBoYSI6InRlc3Rfc3RyaW5nIiwiQmV0YSI6LTk4NzZ9Cg==
func Value ¶ added in v1.75.1
func Value[T any](p *T) T
Value returns the value of the provided pointer or the type default (zero value) if nil.
Example ¶
package main import ( "fmt" "github.com/Vonage/gosrvlib/pkg/typeutil" ) func main() { num := 5 p := &num v := typeutil.Value(p) fmt.Println(v) }
Output: 5