新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GoFrame教程:GoFramegvar-方法介紹
以下常用方法列表,文檔更新可能滯后于代碼新特性,更多的方法及示例請參考代碼文檔:https://pkg.GO.dev/github.com/gogf/gf/v2/container/gvar

New
- 說明:?
New?創(chuàng)建并返回一個帶有給定?value?的新 ?Var???蛇x參數(shù) ?safe?指定是否在并發(fā)安全中使用 ?Var?,其默認(rèn)值是?false?。 - 格式:
func New(value interface{}, safe ...bool) *Var- 示例:
// New
func ExampleVarNew() {
v := gvar.New(400)
g.Dump(v)
// Output:
// "400"
}Create
- 說明:?
Create?創(chuàng)建并返回一個帶有給定?v?的新 ?Var?。可選參數(shù) ?safe?指定是否在并發(fā)安全中使用 ?Var?,其默認(rèn)值是?false?。 - 格式:
func Create(value interface{}, safe ...bool) Var- 示例:
// Create
func ExampleVarCreate() {
var v = gvar.Create(100.0)
g.Dump(&v)
// Output:
// "100"
}Clone
- 說明:?
Clone?將當(dāng)前 ?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?的值設(shè)置為?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?的當(dāng)前值,類型為?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?轉(zhuǎn)換為字節(jié)數(shù)組。 - 格式:
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?轉(zhuǎn)換為字符串。 - 格式:
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?轉(zhuǎn)換為布爾值。 - 格式:
func (v *Var) Bool() bool- 示例:
// Bool
func ExampleVar_Bool() {
var v = gvar.New(true)
g.DumpWithType(v.Bool())
// Output:
// bool(true)
}Int
- 說明:?
Int?將?v?轉(zhuǎn)換為整型。 - 格式:
func (v *Var) Int() int- 示例:
// Int
func ExampleVar_Int() {
var v = gvar.New(-1000)
g.DumpWithType(v.Int())
// Output:
// int(-1000)
}Uint
- 說明:?
Uint?將?v?轉(zhuǎn)換為無符號整型。 - 格式:
func (v *Var) Uint() uint- 示例:
// Uint
func ExampleVar_Uint() {
var v = gvar.New(1000)
g.DumpWithType(v.Uint())
// Output:
// uint(1000)
}Float32
- 說明:?
Float32?將?v?轉(zhuǎn)換為32位浮點(diǎn)型。 - 格式:
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?轉(zhuǎn)換為64位浮點(diǎn)型。 - 格式:
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?轉(zhuǎn)換為?time.Time?。參數(shù)?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
- 說明:?
GTime?將?v?轉(zhuǎn)換為?*gtime.Time?。參數(shù)?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?轉(zhuǎn)換為?time.Duration?。如果?v?的值是字符串,那么它使用 ?time.ParseDuration? 進(jìn)行轉(zhuǎn)換。 - 格式:
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?實(shí)現(xiàn)了?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?實(shí)現(xiàn)了?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?是一個接口實(shí)現(xiàn),它為 ?Var?設(shè)置任何類型的值。 - 格式:
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?是否為結(jié)構(gòu)體類型,如果是?struct?類型返回?true?,反之返回?false?。 - 格式:
func (v *Var) IsStruct() bool- 示例:
// IsStruct
func ExampleVar_IsStruct() {
g.Dump(g.NewVar(0).IsStruct())
g.Dump(g.NewVar(g.Map{"k": "v"}).IsStruct())
a := struct{}{}
g.Dump(g.NewVar(a).IsStruct())
g.Dump(g.NewVar(&a).IsStruct())
// Output:
// false
// false
// true
// true
}ListItemValues
- 說明: ?
ListItemValues?用鍵?key?檢索并返回所有項(xiàng)結(jié)構(gòu)/映射的元素。注意,參數(shù)?list?應(yīng)該是切片類型,其中包含 ?map?或 ?struct?的元素,否則它會返回一個空切片。 - 格式:
func (v *Var) ListItemValues(key interface{}) (values []interface{})- 示例:
// ListItemValues
func ExampleVar_ListItemValues() {
var goods1 = g.List{
g.Map{"id": 1, "price": 100.00},
g.Map{"id": 2, "price": 0},
g.Map{"id": 3, "price": nil},
}
var v = gvar.New(goods1)
fmt.Println(v.ListItemValues("id"))
fmt.Println(v.ListItemValues("price"))
// Output:
// [1 2 3]
// [100 0 ]
} ListItemValuesUnique
- 說明: ?
ListItemValuesUnique?檢索并返回所有帶有指定?key?的 ?struct/map? 的唯一元素。注意,參數(shù)?list?應(yīng)該是切片類型,其中包含 ?map?或 ?struct?的元素,否則它會返回一個空切片。 - 格式:
func (v *Var) ListItemValuesUnique(key string) []interface{}- 示例:
// ListItemValuesUnique
func ExampleVar_ListItemValuesUnique() {
var (
goods1 = g.List{
g.Map{"id": 1, "price": 100.00},
g.Map{"id": 2, "price": 100.00},
g.Map{"id": 3, "price": nil},
}
v = gvar.New(goods1)
)
fmt.Println(v.ListItemValuesUnique("id"))
fmt.Println(v.ListItemValuesUnique("price"))
// Output:
// [1 2 3]
// [100 ]
} Struct
- 說明: ?
Struct?將?v?的值映射到“指針”。參數(shù)?pointer?應(yīng)該是指向結(jié)構(gòu)體實(shí)例的指針。參數(shù)?mapping?用于指定鍵到屬性的映射規(guī)則。 - 格式:
func (v *Var) Struct(pointer interface{}, mapping ...map[string]string) error- 示例:
func ExampleVar_Struct() {
params1 := g.Map{
"uid": 1,
"Name": "john",
}
v := gvar.New(params1)
type tartget struct {
Uid int
Name string
}
t := new(tartget)
if err := v.Struct(&t); err != nil {
panic(err)
}
g.Dump(t)
// Output:
// {
// Uid: 1,
// Name: "john",
// }
}Structs
- 說明: ?
Structs?將?v?轉(zhuǎn)換為給定結(jié)構(gòu)體的切片類型。參數(shù)?pointer?應(yīng)該是指向結(jié)構(gòu)體實(shí)例的指針。參數(shù)?mapping?用于指定鍵到屬性的映射規(guī)則。 - 格式:
func (v *Var) Structs(pointer interface{}, mapping ...map[string]string) error- 示例:
func ExampleVar_Structs() {
paramsArray := []g.Map{}
params1 := g.Map{
"uid": 1,
"Name": "golang",
}
params2 := g.Map{
"uid": 2,
"Name": "java",
}
paramsArray = append(paramsArray, params1, params2)
v := gvar.New(paramsArray)
type tartget struct {
Uid int
Name string
}
var t []tartget
if err := v.Structs(&t); err != nil {
panic(err)
}
g.DumpWithType(t)
// Output:
// []gvar_test.tartget(2) [
// gvar_test.tartget(2) {
// Uid: int(1),
// Name: string(6) "golang",
// },
// gvar_test.tartget(2) {
// Uid: int(2),
// Name: string(4) "java",
// },
// ]
}Ints
- 說明: ?
Ints?將?v?轉(zhuǎn)換為 ?[]int?。 - 格式:
func (v *Var) Ints() []int- 示例:
// Ints
func ExampleVar_Ints() {
var (
arr = []int{1, 2, 3, 4, 5}
obj = gvar.New(arr)
)
fmt.Println(obj.Ints())
// Output:
// [1 2 3 4 5]
}Int64s
- 說明: ?
Int64s?將?v?轉(zhuǎn)換為 ?[]64int?。 - 格式:
func (v *Var) Int64s() []64int- 示例:
// Int64s
func ExampleVar_Int64s() {
var (
arr = []int64{1, 2, 3, 4, 5}
obj = gvar.New(arr)
)
fmt.Println(obj.Int64s())
// Output:
// [1 2 3 4 5]
}Uints
- 說明:?
Uints?將?v?轉(zhuǎn)換為 ?[]uint? 。 - 格式:
func (v *Var) Uints() []uint- 示例:
// Uints
func ExampleVar_Uints() {
var (
arr = []uint{1, 2, 3, 4, 5}
obj = gvar.New(arr)
)
fmt.Println(obj.Uints())
// Output:
// [1 2 3 4 5]
}Uint64s
- 說明:?
Uint64s?將?v?轉(zhuǎn)換為 ?[]uint64? 。 - 格式:
func (v *Var) Uint64s() []uint64- 示例:
// Uint64s
func ExampleVar_Uint64s() {
var (
arr = []uint64{1, 2, 3, 4, 5}
obj = gvar.New(arr)
)
fmt.Println(obj.Uint64s())
// Output:
// [1 2 3 4 5]
}Floats
- 說明:?
Floats??Float64s?的別名。 - 格式:
func (v *Var) Floats() []float64- 示例:
// Floats
func ExampleVar_Floats() {
var (
arr = []float64{1, 2, 3, 4, 5}
obj = gvar.New(arr)
)
fmt.Println(obj.Floats())
// Output:
// [1 2 3 4 5]
}Float64s
- 說明:?
Float64s?將?v?轉(zhuǎn)換為?[]float64?。 - 格式:
func (v *Var) Float64s() []float64- 示例:
// Float64s
func ExampleVar_Float64s() {
var (
arr = []float64{1, 2, 3, 4, 5}
obj = gvar.New(arr)
)
fmt.Println(obj.Float64s())
// Output:
// [1 2 3 4 5]
}Float32s
- 說明:?
Float32s?將?v?轉(zhuǎn)換為?[]float32?。 - 格式:
func (v *Var) Float32s() []float32- 示例:
// Float32s
func ExampleVar_Float32s() {
var (
arr = []float32{1, 2, 3, 4, 5}
obj = gvar.New(arr)
)
fmt.Println(obj.Float32s())
// Output:
// [1 2 3 4 5]
}Strings
- 說明:?
Strings?將?v?轉(zhuǎn)換為?[]strin?g。 - 格式:
func (v *Var) Strings() []string- 示例:
// Strings
func ExampleVar_Strings() {
var (
arr = []string{"GoFrame", "Golang"}
obj = gvar.New(arr)
)
fmt.Println(obj.Strings())
// Output:
// [GoFrame Golang]
}Interfaces
- 說明:?
Interfaces?將?v?轉(zhuǎn)換為?[]interface{}?。 - 格式:
func (v *Var) Interfaces() []interface{}- 示例:
// Interfaces
func ExampleVar_Interfaces() {
var (
arr = []string{"GoFrame", "Golang"}
obj = gvar.New(arr)
)
fmt.Println(obj.Interfaces())
// Output:
// [GoFrame Golang]
}Slice
- 說明:?
Slice Interfaces?的別名。 - 格式:
func (v *Var) Slice() []interface{}- 示例:
// Slice
func ExampleVar_Slice() {
var (
arr = []string{"GoFrame", "Golang"}
obj = gvar.New(arr)
)
fmt.Println(obj.Slice())
// Output:
// [GoFrame Golang]
}Array
- 說明:?
Array Interfaces?的別名。 - 格式:
func (v *Var) Array() []interface{}- 示例:
// Array
func ExampleVar_Array() {
var (
arr = []string{"GoFrame", "Golang"}
obj = gvar.New(arr)
)
fmt.Println(obj.Array())
// Output:
// [GoFrame Golang]
}Vars
- 說明:?
Vars?將?v?轉(zhuǎn)換為?[]var?。 - 格式:
func (v *Var) Vars() []*Var- 示例:
// Vars
func ExampleVar_Vars() {
var (
arr = []string{"GoFrame", "Golang"}
obj = gvar.New(arr)
)
fmt.Println(obj.Vars())
// Output:
// [GoFrame Golang]
}Map
- 說明:?
Map?將?v?轉(zhuǎn)換為?map[string]interface{}?。 - 格式:
func (v *Var) Map(tags ...string) map[string]interface{}- 示例:
// Map
func ExampleVar_Map() {
var (
m = g.Map{"id": 1, "price": 100.00}
v = gvar.New(m)
res = v.Map()
)
fmt.Println(res["id"], res["price"])
// Output:
// 1 100
}MapStrAny
- 說明:?
MapStrAny?類似于?Map?函數(shù),但是實(shí)現(xiàn)了?MapStrAny?接口。 - 格式:
func (v *Var) MapStrAny() map[string]interface{}- 示例:
// MapStrAny
func ExampleVar_MapStrAny() {
var (
m1 = g.Map{"id": 1, "price": 100}
v = gvar.New(m1)
v2 = v.MapStrAny()
)
fmt.Println(v2["price"], v2["id"])
// Output:
// 100 1
}MapStrStr
- 說明:?
MapStrStr?將?v?轉(zhuǎn)換為?map[string]string?。 - 格式:
func (v *Var) MapStrStr(tags ...string) map[string]string- 示例:
// MapStrStr
func ExampleVar_MapStrStr() {
var (
m1 = g.Map{"id": 1, "price": 100}
v = gvar.New(m1)
v2 = v.MapStrStr()
)
fmt.Println(v2["price"] + "$")
// Output:
// 100$
}MapStrVar
- 說明:?
MapStrVar?將?v?轉(zhuǎn)換為?map[string]*Var?。 - 格式:
func (v *Var) MapStrVar(tags ...string) map[string]*Var- 示例:
// MapStrVar
func ExampleVar_MapStrVar() {
var (
m1 = g.Map{"id": 1, "price": 100}
v = gvar.New(m1)
v2 = v.MapStrVar()
)
fmt.Println(v2["price"].Float64() * 100)
// Output:
// 10000
}MapDeep
- 說明:?
MapDeep?將?v?遞歸轉(zhuǎn)換為?map[string]interface{}?。 - 格式:
func (v *Var) MapDeep(tags ...string) map[string]interface{}- 示例:
// MapDeep
func ExampleVar_MapDeep() {
var (
m1 = g.Map{"id": 1, "price": 100}
m2 = g.Map{"product": m1}
v = gvar.New(m2)
v2 = v.MapDeep()
)
fmt.Println(v2["product"])
// Output:
// map[id:1 price:100]
}MapStrStrDeep
- 說明:?
MapStrStrDeep?將?v?遞歸轉(zhuǎn)換為?map[string]string?。 - 格式:
func (v *Var) MapStrStrDeep(tags ...string) map[string]string- 示例:
// MapStrStrDeep
func ExampleVar_MapStrStrDeep() {
var (
m1 = g.Map{"id": 1, "price": 100}
m2 = g.Map{"product": m1}
v = gvar.New(m2)
v2 = v.MapStrStrDeep()
)
fmt.Println(v2["product"])
// Output:
// {"id":1,"price":100}
}MapStrVarDeep
- 說明:?
MapStrVarDeep?將?v?遞歸轉(zhuǎn)換為?map[string]*Var?。 - 格式:
func (v *Var) MapStrVarDeep(tags ...string) map[string]*Var- 示例:
// MapStrVarDeep
func ExampleVar_MapStrVarDeep() {
var (
m1 = g.Map{"id": 1, "price": 100}
m2 = g.Map{"product": m1}
v = gvar.New(m2)
v2 = v.MapStrVarDeep()
)
fmt.Println(v2["product"])
// Output:
// {"id":1,"price":100}
}Maps
- 說明:?
Maps?將?v?轉(zhuǎn)換為?map[string]interface{}?。 - 格式:
func (v *Var) Maps(tags ...string) []map[string]interface{}- 示例:
// Maps
func ExampleVar_Maps() {
var m = gvar.New(g.ListIntInt{g.MapIntInt{0: 100, 1: 200}, g.MapIntInt{0: 300, 1: 400}})
fmt.Printf("%#v", m.Maps())
// Output:
// []map[string]interface {}{map[string]interface {}{"0":100, "1":200}, map[string]interface {}{"0":300, "1":400}}
}MapsDeep
- 說明:?
MapsDeep?將?v?遞歸轉(zhuǎn)換為?[]map[string]interface{}?。 - 格式:
func (v *Var) MapsDeep(tags ...string) []map[string]interface{}- 示例:
// MapsDeep
func ExampleVar_MapsDeep() {
var (
p1 = g.MapStrAny{"product": g.Map{"id": 1, "price": 100}}
p2 = g.MapStrAny{"product": g.Map{"id": 2, "price": 200}}
v = gvar.New(g.ListStrAny{p1, p2})
v2 = v.MapsDeep()
)
fmt.Printf("%#v", v2)
// Output:
// []map[string]interface {}{map[string]interface {}{"product":map[string]interface {}{"id":1, "price":100}}, map[string]interface {}{"product":map[string]interface {}{"id":2, "price":200}}}
}MapToMap
- 說明:?
MapToMap?將?v?轉(zhuǎn)換為?pointer?指定的?map?類型,?mapping?為指定的映射規(guī)則。 - 格式:
func (v *Var) MapToMap(pointer interface{}, mapping ...map[string]string) (err error)- 示例:
// MapToMap
func ExampleVar_MapToMap() {
var (
m1 = gvar.New(g.MapIntInt{0: 100, 1: 200})
m2 = g.MapStrStr{}
)
err := m1.MapToMap(&m2)
if err != nil {
panic(err)
}
fmt.Printf("%#v", m2)
// Output:
// map[string]string{"0":"100", "1":"200"}
}MapToMaps
- 說明:?
MapToMaps?將?v?轉(zhuǎn)換為 ?pointer?指定的?map?類型,?mapping?為指定的映射規(guī)則。 - 格式:
func (v *Var) MapToMaps(pointer interface{}, mapping ...map[string]string) (err error)
- 示例:
// MapToMaps
func ExampleVar_MapToMaps() {
var (
p1 = g.MapStrAny{"product": g.Map{"id": 1, "price": 100}}
p2 = g.MapStrAny{"product": g.Map{"id": 2, "price": 200}}
v = gvar.New(g.ListStrAny{p1, p2})
v2 []g.MapStrStr
)
err := v.MapToMaps(&v2)
if err != nil {
panic(err)
}
fmt.Printf("%#v", v2)
// Output:
// []map[string]string{map[string]string{"product":"{\"id\":1,\"price\":100}"}, map[string]string{"product":"{\"id\":2,\"price\":200}"}}
}MapToMapsDeep
- 說明:?
MapToMaps?將?v?遞歸地轉(zhuǎn)換為?pointer?指定的?map?類型,?mapping?為指定的映射規(guī)則。 - 格式:
func (v *Var) MapToMapsDeep(pointer interface{}, mapping ...map[string]string) (err error)
- 示例:
// MapToMapDeep
func ExampleVar_MapToMapDeep() {
var (
p1 = gvar.New(g.MapStrAny{"product": g.Map{"id": 1, "price": 100}})
p2 = g.MapStrAny{}
)
err := p1.MapToMap(&p2)
if err != nil {
panic(err)
}
fmt.Printf("%#v", p2)
// Output:
// map[string]interface {}{"product":map[string]interface {}{"id":1, "price":100}}
}Scan
- 說明:?
Scan?會自動檢查?pointer?的類型,并將?params?轉(zhuǎn)換為?pointer?,?pointer?支持的類型為:?*map?、 ?*[]map?、 ?*[]*map?、 ?*struct?、 ?**struct?、 ?*[]struct?、 ?*[]*struct? - 格式:
func (v *Var) Scan(pointer interface{}, mapping ...map[string]string) error
- 示例:
// Scan
func ExampleVar_Scan() {
type Student struct {
Id *g.Var
Name *g.Var
Scores *g.Var
}
var (
s Student
m = g.Map{
"Id": 1,
"Name": "john",
"Scores": []int{100, 99, 98},
}
)
if err := gconv.Scan(m, &s); err != nil {
panic(err)
}
g.DumpWithType(s)
// Output:
// gvar_test.Student(3) {
// Id: *gvar.Var(1) "1",
// Name: *gvar.Var(4) "john",
// Scores: *gvar.Var(11) "[100,99,98]",
// }
} 網(wǎng)站欄目:創(chuàng)新互聯(lián)GoFrame教程:GoFramegvar-方法介紹
文章起源:http://fisionsoft.com.cn/article/djciepc.html


咨詢
建站咨詢
