gvar

通用动态变量,支持各种内置的数据类型转换,可以作为interface{}类型的替代数据类型,并且该类型支持并发安全。

Tips: 框架同时提供了g.Var的数据类型,其实也是gvar.Var数据类型的别名。

使用场景

使用interface{}的场景,各种不固定数据类型格式,或者需要对变量进行频繁的数据类型转换的场景。

使用方式

  1. import "gitee.com/johng/gf/g/container/gvar"

方法列表godoc.org/github.com/johng-cn/gf/g/container/gvar

  1. type Var
  2. func New(value interface{}, safe ... bool) *Var
  3. func (v *Var) Bool() bool
  4. func (v *Var) Bytes() []byte
  5. func (v *Var) Float32() float32
  6. func (v *Var) Float64() float64
  7. func (v *Var) Floats() []float64
  8. func (v *Var) Int() int
  9. func (v *Var) Int16() int16
  10. func (v *Var) Int32() int32
  11. func (v *Var) Int64() int64
  12. func (v *Var) Int8() int8
  13. func (v *Var) Interface() interface{}
  14. func (v *Var) Interfaces() []interface{}
  15. func (v *Var) Ints() []int
  16. func (v *Var) IsNil() bool
  17. func (v *Var) Set(value interface{})
  18. func (v *Var) String() string
  19. func (v *Var) Strings() []string
  20. func (v *Var) Struct(objPointer interface{}, attrMapping ...map[string]string) error
  21. func (v *Var) Time(format ...string) time.Time
  22. func (v *Var) TimeDuration() time.Duration
  23. func (v *Var) Uint() uint
  24. func (v *Var) Uint16() uint16
  25. func (v *Var) Uint32() uint32
  26. func (v *Var) Uint64() uint64
  27. func (v *Var) Uint8() uint8
  28. func (v *Var) Val() interface{}

使用示例:

  1. package main
  2. import (
  3. "gitee.com/johng/gf/g"
  4. "fmt"
  5. )
  6. func main() {
  7. var v g.Var
  8. v.Set("123")
  9. fmt.Println(v.Val())
  10. // 基本类型转换
  11. fmt.Println(v.Int())
  12. fmt.Println(v.Uint())
  13. fmt.Println(v.Float64())
  14. // slice转换
  15. fmt.Println(v.Ints())
  16. fmt.Println(v.Floats())
  17. fmt.Println(v.Strings())
  18. // struct转换
  19. type Score struct {
  20. Value int
  21. }
  22. s := new(Score)
  23. v.Struct(s)
  24. fmt.Println(s)
  25. }

执行后,输出结果为:

  1. 123
  2. 123
  3. 123
  4. 123
  5. [123]
  6. [123]
  7. [123]
  8. &{123}