Documentation ¶
Overview ¶
Package typeutil contains a collection of type-related utility functions.
This package provides a set of utility functions and definitions to work with generic types in Go. It also provides serialization and deserialization functions to safely transmit, store and retrieve data between different systems (e.g., databases, queues, caches, etc.).
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