以下常用方法列表,文档更新可能滞后于代码新特性,更多的方法及示例请参考代码文档: https://pkg.go.dev/github.com/gogf/gf/v2/container/gvar
New
- 说明:
New
创建并返回一个带有给定value
的新Var
。可选参数safe
指定是否在并发安全中使用Var
,其默认值是false
。 - 格式:
func New(value interface{}, safe ...bool) *Var
- 示例:
// New
func ExampleVarNew() {
v := gvar.New(400)
g.Dump(v)
// Output:
// "400"
}
Create
- 说明:
Create
创建并返回一个带有给定v
的新Var
。可选参数safe
指定是否在并发安全中使用Var
,其默认值是false
。 - 格式:
func Create(value interface{}, safe ...bool) Var
- 示例:
// Create
func ExampleVarCreate() {
var v = gvar.Create(100.0)
g.Dump(&v)
// Output:
// "100"
}
Clone
- 说明:
Clone
将当前Var
的浅拷贝并返回一个指向此Var
的指针。 - 格式:
func (v *Var) Clone() *Var
- 示例
// Clone
func ExampleVar_Clone() {
tmp := "fisrt hello"
v := gvar.New(tmp)
g.DumpWithType(v.Clone())
fmt.Println(v == v.Clone())
// Output:
// *gvar.Var(11) "fisrt hello"
// false
}
Set
- 说明:
Set
将v
的值设置为value
并返回v
的旧值。 - 格式:
func (v *Var) Set(value interface{}) (old interface{})
- 示例:
// Set
func ExampleVar_Set() {
var v = gvar.New(100.00)
g.Dump(v.Set(200.00))
g.Dump(v)
// Output:
// 100
// "200"
}
Val
- 说明:
Val
返回v
的当前值,类型为interface{}
。 - 格式:
func (v *Var) Val() interface{}
- 示例:
// Val
func ExampleVar_Val() {
var v = gvar.New(100.00)
g.DumpWithType(v.Val())
// Output:
// float64(100)
}
Interface
- 说明:
Interface
是Val
的别名。 - 格式:
func (v *Var) Interface() interface{}
- 示例:
// Interface
func ExampleVar_Interface() {
var v = gvar.New(100.00)
g.DumpWithType(v.Interface())
// Output:
// float64(100)
}
Bytes
- 说明:
Bytes
将v
转换为字节数组。 - 格式:
func (v *Var) Bytes() []byte
- 示例:
// Bytes
func ExampleVar_Bytes() {
var v = gvar.New("GoFrame")
g.DumpWithType(v.Bytes())
// Output:
// []byte(7) "GoFrame"
}
String
- 说明:
String
将v
转换为字符串。 - 格式:
func (v *Var) String() string
- 示例:
// String
func ExampleVar_String() {
var v = gvar.New("GoFrame")
g.DumpWithType(v.String())
// Output:
// string(7) "GoFrame"
}
Bool
- 说明:
Bool
将v
转换为布尔值。 - 格式:
func (v *Var) Bool() bool
- 示例:
// Bool
func ExampleVar_Bool() {
var v = gvar.New(true)
g.DumpWithType(v.Bool())
// Output:
// bool(true)
}
Int
- 说明:
Int
将v
转换为整型。 - 格式:
func (v *Var) Int() int
- 示例:
// Int
func ExampleVar_Int() {
var v = gvar.New(-1000)
g.DumpWithType(v.Int())
// Output:
// int(-1000)
}
Uint
- 说明:
Uint
将v
转换为无符号整型。 - 格式:
func (v *Var) Uint() uint
- 示例:
// Uint
func ExampleVar_Uint() {
var v = gvar.New(1000)
g.DumpWithType(v.Uint())
// Output:
// uint(1000)
}
Float32
- 说明:
Float32
将v
转换为32位
浮点型。 - 格式:
func (v *Var) Float32() float32
- 示例:
// Float32
func ExampleVar_Float32() {
var price = gvar.New(100.00)
g.DumpWithType(price.Float32())
// Output:
// float32(100)
}
Float64
- 说明:
Float64
将v
转换为64位
浮点型。 - 格式:
func (v *Var) Float64() float64
- 示例:
// Float32
func ExampleVar_Float64() {
var price = gvar.New(100.00)
g.DumpWithType(price.Float64())
// Output:
// float64(100)
}
Time
- 说明:
Time
将v
转换为time.Time
。参数format
用gtime
指定时间字符串的格式,例如:Y-m-d H:i:s
。 - 格式:
func (v *Var) Time(format ...string) time.Time
- 示例:
// Time
func ExampleVar_Time() {
var v = gvar.New("2021-11-11 00:00:00")
g.DumpWithType(v.Time())
// Output:
// time.Time(29) "2021-11-11 00:00:00 +0800 CST"
}
GTime
- 说明:
G``Time
将v
转换为*gtime.Time
。参数format
用gtime
指定时间字符串的格式,例如:Y-m-d H:i:s
。 - 格式:
func (v *Var) GTime(format ...string) *gtime.Time
- 示例:
// GTime
func ExampleVar_GTime() {
var v = gvar.New("2021-11-11 00:00:00")
g.DumpWithType(v.GTime())
// Output:
// *gtime.Time(19) "2021-11-11 00:00:00"
}
Duration
- 说明:
Duration
将v
转换为time.Duration
。如果v
的值是字符串,那么它使用time.ParseDuration
进行转换。 - 格式:
func (v *Var) Duration() time.Duration
- 示例:
// Duration
func ExampleVar_Duration() {
var v = gvar.New("300s")
g.DumpWithType(v.Duration())
// Output:
// time.Duration(4) "5m0s"
}
MarshalJSON
- 说明:
MarshalJSON
实现了json
接口的MarshalJSON
。 - 格式:
func (v *Var) MarshalJSON() ([]byte, error)
- 示例:
// MarshalJSON
func ExampleVar_MarshalJSON() {
testMap := g.Map{
"code": "0001",
"name": "Golang",
"count": 10,
}
var v = gvar.New(testMap)
res, err := json.Marshal(&v)
if err != nil {
panic(err)
}
g.DumpWithType(res)
// Output:
// []byte(42) "{"code":"0001","count":10,"name":"Golang"}"
}
UnmarshalJSON
- 说明:
UnmarshalJSON
实现了json
接口的UnmarshalJSON
。 - 格式:
func (v *Var) UnmarshalJSON(b []byte) error
- 示例:
// UnmarshalJSON
func ExampleVar_UnmarshalJSON() {
tmp := []byte(`{
"Code": "0003",
"Name": "Golang Book3",
"Quantity": 3000,
"Price": 300,
"OnSale": true
}`)
var v = gvar.New(map[string]interface{}{})
if err := json.Unmarshal(tmp, &v); err != nil {
panic(err)
}
g.Dump(v)
// Output:
// "{\"Code\":\"0003\",\"Name\":\"Golang Book3\",\"OnSale\":true,\"Price\":300,\"Quantity\":3000}"
}
UnmarshalValue
- 说明:
UnmarshalValue
是一个接口实现,它为Var
设置任何类型的值。 - 格式:
func (v *Var) UnmarshalValue(value interface{}) error
- 示例:
// UnmarshalValue
func ExampleVar_UnmarshalValue() {
tmp := g.Map{
"code": "00002",
"name": "GoFrame",
"price": 100,
"sale": true,
}
var v = gvar.New(map[string]interface{}{})
if err := v.UnmarshalValue(tmp); err != nil {
panic(err)
}
g.Dump(v)
// Output:
// "{\"code\":\"00002\",\"name\":\"GoFrame\",\"price\":100,\"sale\":true}"
}
IsNil
- 说明:
IsNil
判断v
是否为nil
,为nil
返回true
,反之返回false
。 - 格式:
func (v *Var) IsNil() bool
- 示例:
/// IsNil
func ExampleVar_IsNil() {
g.Dump(gvar.New(0).IsNil())
g.Dump(gvar.New(0.1).IsNil())
// true
g.Dump(gvar.New(nil).IsNil())
g.Dump(gvar.New("").IsNil())
// Output:
// false
// false
// true
// false
}
IsEmpty
- 说明:
IsEmpty
判断v
是否为空,为空返回true
,反之返回false
。 - 格式:
func (v *Var) IsEmpty() bool
- 示例:
// IsEmpty
func ExampleVar_IsEmpty() {
g.Dump(gvar.New(0).IsEmpty())
g.Dump(gvar.New(nil).IsEmpty())
g.Dump(gvar.New("").IsEmpty())
g.Dump(gvar.New(g.Map{"k": "v"}).IsEmpty())
// Output:
// true
// true
// true
// false
}
IsInt
- 说明:
IsInt
判断v
是否为int
类型,如果是int
类型返回true
,反之返回false
。 - 格式:
func (v *Var) IsInt() bool
- 示例:
// IsInt
func ExampleVar_IsInt() {
g.Dump(gvar.New(0).IsInt())
g.Dump(gvar.New(0.1).IsInt())
g.Dump(gvar.New(nil).IsInt())
g.Dump(gvar.New("").IsInt())
// Output:
// true
// false
// false
// false
}
IsUint
- 说明:
IsUint
判断v
是否为uint
类型,如果是uint
类型返回true
,反之返回false
。 - 格式:
func (v *Var) IsUint() bool
- 示例:
// IsUint
func ExampleVar_IsUint() {
g.Dump(gvar.New(0).IsUint())
g.Dump(gvar.New(uint8(8)).IsUint())
g.Dump(gvar.New(nil).IsUint())
// Output:
// false
// true
// false
}
IsFloat
- 说明:
IsFloat
判断v
是否为float
类型,如果是float
类型返回true
, 反之返回false
。 - 格式:
func (v *Var) IsFloat() bool
- 示例:
// IsFloat
func ExampleVar_IsFloat() {
g.Dump(g.NewVar(uint8(8)).IsFloat())
g.Dump(g.NewVar(float64(8)).IsFloat())
g.Dump(g.NewVar(0.1).IsFloat())
// Output:
// false
// true
// true
}
IsSlice
- 说明:
IsSlice
判断v
是否为切片类型,如果是slice
类型返回true
,反之返回false
。 - 格式:
func (v *Var) IsSlice() bool
- 示例:
// IsSlice
func ExampleVar_IsSlice() {
g.Dump(g.NewVar(0).IsSlice())
g.Dump(g.NewVar(g.Slice{0}).IsSlice())
// Output:
// false
// true
}
IsMap
- 说明:
IsMap
判断v
是否为映射类型,如果是map
类型返回true
,反之返回false
。 - 格式:
func (v *Var) IsMap() bool
- 示例:
// IsMap
func ExampleVar_IsMap() {
g.Dump(g.NewVar(0).IsMap())
g.Dump(g.NewVar(g.Map{"k": "v"}).IsMap())
g.Dump(g.NewVar(g.Slice{}).IsMap())
// Output:
// false
// true
// false
}
IsStruct
- 说明:
IsStruct
判断v
是否为结构体类型,如果是struct
类型返回true
,反之返回false
。 - 格式:
func (v *Var) IsStruct() bool