typeutil

package
v1.80.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 12, 2024 License: MIT Imports: 8 Imported by: 0

Documentation

Overview

Package typeutil contains a collection of type-related utility functions.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Decode

func Decode(msg string, data any) error

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

func Deserialize(msg string, data any) error

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

func Encode(data any) (string, error)

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

func IsNil(v any) bool

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

func IsZero[T any](v T) bool

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

func Serialize(data any) (string, error)

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

func Zero added in v1.75.1

func Zero[T any](_ T) T

Zero returns the zero instance (e.g. empty string, 0 int, nil pointer).

Example
package main

import (
	"fmt"

	"github.com/Vonage/gosrvlib/pkg/typeutil"
)

func main() {
	num := 5

	v := typeutil.Zero(num)
	fmt.Println(v)

}
Output:

0

Types

type Float added in v1.80.0

type Float interface {
	~float32 | ~float64
}

Float is a constraint for float types.

type Int added in v1.80.0

type Int interface {
	~int | ~int8 | ~int16 | ~int32 | ~int64
}

Int is a constraint for signed integer types.

type Number added in v1.80.0

type Number interface {
	Int | UInt | Float
}

Number is a constraint for all integer and float numbers.

type Ordered added in v1.80.0

type Ordered interface {
	Number | ~string
}

Ordered is a constraint that permits any ordered type: any type that supports the operators < <= >= >.

type UInt added in v1.80.0

type UInt interface {
	~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr
}

UInt is a constraint for unsigned integer types.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL