Documentation ¶
Overview ¶
包gvar提供了一种通用变量类型,类似于泛型。
Index ¶
- type MapOption
- type Var
- func (v *Var) Array别名() []interface{}
- func (v *Var) DeepCopy() interface{}
- func (v *Var) Interface() interface{}
- func (v *Var) MapDeep弃用(值类型标签 ...string) map[string]interface{}
- func (v *Var) MapStrStrDeep弃用(值类型标签 ...string) map[string]string
- func (v *Var) MapToMap(pointer interface{}, mapping ...map[string]string) (err error)
- func (v *Var) MapToMaps(pointer interface{}, mapping ...map[string]string) (err error)
- func (v *Var) MapToMapsDeep(pointer interface{}, mapping ...map[string]string) (err error)
- func (v *Var) MapsDeep弃用(值类型标签 ...string) []map[string]interface{}
- func (v Var) MarshalJSON() ([]byte, error)
- func (v *Var) Slice别名() []interface{}
- func (v *Var) String() string
- func (v *Var) Struct(pointer interface{}, mapping ...map[string]string) error
- func (v *Var) Structs(pointer interface{}, mapping ...map[string]string) error
- func (v *Var) UnmarshalJSON(b []byte) error
- func (v *Var) UnmarshalValue(value interface{}) error
- func (v *Var) X取Map(选项 ...MapOption) map[string]interface{}
- func (v *Var) X取MapStrAny(选项 ...MapOption) map[string]interface{}
- func (v *Var) X取Map数组(选项 ...MapOption) []map[string]interface{}
- func (v *Var) X取any数组() []interface{}
- func (v *Var) X取gtime时间类(格式 ...string) *时间类.Time
- func (v *Var) X取值() interface{}
- func (v *Var) X取字节集() []byte
- func (v *Var) X取小数32位() float32
- func (v *Var) X取小数32位数组() []float32
- func (v *Var) X取小数64位() float64
- func (v *Var) X取小数64位数组() []float64
- func (v *Var) X取小数数组() []float64
- func (v *Var) X取布尔() bool
- func (v *Var) X取整数() int
- func (v *Var) X取整数16位() int16
- func (v *Var) X取整数32位() int32
- func (v *Var) X取整数64位() int64
- func (v *Var) X取整数64位数组() []int64
- func (v *Var) X取整数8位() int8
- func (v *Var) X取整数数组() []int
- func (v *Var) X取文本Map(选项 ...MapOption) map[string]string
- func (v *Var) X取文本数组() []string
- func (v *Var) X取时长() time.Duration
- func (v *Var) X取时间类(格式 ...string) time.Time
- func (v *Var) X取正整数() uint
- func (v *Var) X取正整数16位() uint16
- func (v *Var) X取正整数32位() uint32
- func (v *Var) X取正整数64位() uint64
- func (v *Var) X取正整数64位数组() []uint64
- func (v *Var) X取正整数8位() uint8
- func (v *Var) X取正整数数组() []uint
- func (v *Var) X取泛型类Map(选项 ...MapOption) map[string]*Var
- func (v *Var) X取泛型类Map_递归(值类型标签 ...string) map[string]*Var
- func (v *Var) X取泛型类数组() []*Var
- func (v *Var) X取结构体指针(结构体指针 interface{}, 名称映射 ...map[string]string) error
- func (v *Var) X取结构数组或Map数组值(名称 interface{}) (值s []interface{})
- func (v *Var) X取结构数组或Map数组值并去重(名称 string) []interface{}
- func (v *Var) X是否为Map() bool
- func (v *Var) X是否为Nil() bool
- func (v *Var) X是否为小数() bool
- func (v *Var) X是否为数组() bool
- func (v *Var) X是否为整数() bool
- func (v *Var) X是否为正整数() bool
- func (v *Var) X是否为空() bool
- func (v *Var) X是否为结构() bool
- func (v *Var) X浅拷贝() *Var
- func (v *Var) X深拷贝() *Var
- func (v *Var) X设置值(值 interface{}) (旧值 interface{})
- type Vars
- func (vs Vars) X取any数组() (数组 []interface{})
- func (vs Vars) X取小数32位数组() (数组 []float32)
- func (vs Vars) X取小数64位数组() (数组 []float64)
- func (vs Vars) X取整数16位数组() (数组 []int16)
- func (vs Vars) X取整数32位数组() (数组 []int32)
- func (vs Vars) X取整数64位数组() (数组 []int64)
- func (vs Vars) X取整数8位数组() (数组 []int8)
- func (vs Vars) X取整数数组() (数组 []int)
- func (vs Vars) X取文本数组() (数组 []string)
- func (vs Vars) X取正整数16位数组() (数组 []uint16)
- func (vs Vars) X取正整数32位数组() (数组 []uint32)
- func (vs Vars) X取正整数64位数组() (数组 []uint64)
- func (vs Vars) X取正整数8位数组() (数组 []uint8)
- func (vs Vars) X取正整数数组() (数组 []uint)
- func (vs Vars) X取结构体指针(结构体指针 interface{}, 名称映射 ...map[string]string) error
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Var ¶
type Var struct {
// contains filtered or unexported fields
}
Var 是一个通用变量类型的实现者。
func (*Var) Interface ¶
func (v *Var) Interface() interface{}
Interface 是 Val 的别名。
Example ¶
Interface
var v = 泛型类.X创建(100.00) g.X调试输出并带类型(v.Interface())
Output: float64(100)
func (*Var) MapStrStrDeep弃用 ¶
MapStrStrDeep 递归地将 `v` 转换并返回为 map[string]string 类型。 已弃用:请改用 MapStrStr。
func (*Var) MapToMap ¶
MapToMap 将任意类型map变量 `params` 转换为另一种map类型变量 `pointer`。 参见 gconv.MapToMap。
Example ¶
MapToMap
var ( m1 = 泛型类.X创建(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"}
func (*Var) MapToMaps ¶
MapToMaps 将任意类型map变量 `params` 转换为另一种map类型变量 `pointer`。 参见 gconv.MapToMaps。
Example ¶
MapToMaps
var ( p1 = g.MapStrAny{"product": g.Map{"id": 1, "price": 100}} p2 = g.MapStrAny{"product": g.Map{"id": 2, "price": 200}} v = 泛型类.X创建(g.MapStrAny数组{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}"}}
func (*Var) MapToMapsDeep ¶
MapToMapsDeep 将任意类型的 map 变量 `params` 递归地转换为另一种 map 类型变量 `pointer`。 参见 gconv.MapToMapsDeep。
Example ¶
MapToMapsDeep
var ( p1 = g.MapStrAny{"product": g.Map{"id": 1, "price": 100}} p2 = g.MapStrAny{"product": g.Map{"id": 2, "price": 200}} v = 泛型类.X创建(g.MapStrAny数组{p1, p2}) v2 []g.MapStrStr ) err := v.MapToMapsDeep(&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}"}}
func (*Var) MapsDeep弃用 ¶
MapsDeep 递归地将 `value` 转换为 []map[string]interface{} 类型的切片。 注:已弃用,请改用 Maps。
func (Var) MarshalJSON ¶
MarshalJSON 实现了 json.Marshal 接口所需的 MarshalJSON 方法。
Example ¶
MarshalJSON
testMap := g.Map{ "code": "0001", "name": "Golang", "count": 10, } var v = 泛型类.X创建(testMap) res, err := json.Marshal(&v) if err != nil { panic(err) } g.X调试输出并带类型(res)
Output: []byte(42) "{"code":"0001","count":10,"name":"Golang"}"
func (*Var) String ¶
String将`v`转换并以字符串形式返回。
Example ¶
String
var v = 泛型类.X创建("GoFrame") g.X调试输出并带类型(v.String())
Output: string(7) "GoFrame"
func (*Var) Struct ¶
Struct 将 `v` 的值映射到 `pointer`。 参数 `pointer` 应该是指向结构体实例的指针。 参数 `mapping` 用于指定键到属性的映射规则。
Example ¶
params1 := g.Map{ "uid": 1, "Name": "john", } v := 泛型类.X创建(params1) type tartget struct { Uid int Name string } t := new(tartget) if err := v.Struct(&t); err != nil { panic(err) } g.X调试输出(t)
Output: { Uid: 1, Name: "john", }
func (*Var) Structs ¶
Structs 将 `v` 转换并以给定的结构体切片形式返回。
Example ¶
paramsArray := []g.Map{} params1 := g.Map{ "uid": 1, "Name": "golang", } params2 := g.Map{ "uid": 2, "Name": "java", } paramsArray = append(paramsArray, params1, params2) v := 泛型类.X创建(paramsArray) type tartget struct { Uid int Name string } var t []tartget if err := v.Structs(&t); err != nil { panic(err) } g.X调试输出并带类型(t)
Output: []泛型类_test.tartget(2) [ 泛型类_test.tartget(2) { Uid: int(1), Name: string(6) "golang", }, 泛型类_test.tartget(2) { Uid: int(2), Name: string(4) "java", }, ]
func (*Var) UnmarshalJSON ¶
UnmarshalJSON 实现了 json.Unmarshal 接口的 UnmarshalJSON 方法。
Example ¶
UnmarshalJSON
tmp := []byte(`{ "Code": "0003", "Name": "Golang Book3", "Quantity": 3000, "Price": 300, "OnSale": true }`) var v = 泛型类.X创建(map[string]interface{}{}) if err := json.Unmarshal(tmp, &v); err != nil { panic(err) } g.X调试输出(v)
Output: "{\"Code\":\"0003\",\"Name\":\"Golang Book3\",\"OnSale\":true,\"Price\":300,\"Quantity\":3000}"
func (*Var) UnmarshalValue ¶
UnmarshalValue 是一个接口实现,用于为 Var 设置任意类型的值。
Example ¶
UnmarshalValue
tmp := g.Map{ "code": "00002", "name": "GoFrame", "price": 100, "sale": true, } var v = 泛型类.X创建(map[string]interface{}{}) if err := v.UnmarshalValue(tmp); err != nil { panic(err) } g.X调试输出(v)
Output: "{\"code\":\"00002\",\"name\":\"GoFrame\",\"price\":100,\"sale\":true}"
func (*Var) X取MapStrAny ¶
MapStrAny 类似于函数 Map,但实现了 MapStrAny 接口。
func (*Var) X取any数组 ¶
func (v *Var) X取any数组() []interface{}
Interfaces 将 `v` 转换并返回为 []interfaces{} 类型的切片。
func (*Var) X取gtime时间类 ¶
GTime 将 `v` 转换并返回为 *gtime.Time 类型。 参数 `format` 指定了时间字符串的格式,遵循 gtime 的规则, 例如:Y-m-d H:i:s。
func (*Var) X取时长 ¶
Duration 将 `v` 转换并返回为 time.Duration 类型。 如果 `v` 的值为字符串,那么它将使用 time.ParseDuration 进行转换。
func (*Var) X取泛型类Map_递归 ¶
MapStrVarDeep 递归地将 `v` 转换并返回为 map[string]*Var 类型的值。 已弃用:请改用 MapStrVar。
func (*Var) X取结构体指针 ¶
Scan 会自动检测 `pointer` 的类型,并将 `params` 转换为 `pointer`。它支持对 `pointer` 进行转换的类型包括:`*map`、`*[]map`、`*[]*map`、`*struct`、`**struct`、`*[]struct` 和 `*[]*struct`。
详情请参阅 gconv.Scan。
func (*Var) X取结构数组或Map数组值 ¶
func (v *Var) X取结构数组或Map数组值(名称 interface{}) (值s []interface{})
ListItemValues 通过 key `key` 获取并返回所有项(item)结构体或映射中的元素。 注意,参数 `list` 应为包含映射或结构体元素的切片类型, 否则将返回一个空切片。
func (*Var) X取结构数组或Map数组值并去重 ¶
ListItemValuesUnique 通过键 `key` 获取并返回所有结构体或映射中的唯一元素。 注意,参数 `list` 应为包含映射或结构体元素的切片类型, 否则将返回一个空切片。
type Vars ¶
type Vars []*Var
Vars 是一个 *Var 类型的切片。
func (Vars) X取any数组 ¶
func (vs Vars) X取any数组() (数组 []interface{})
Interfaces将`vs`转换并返回为[]interface{}类型。
func (Vars) X取正整数16位数组 ¶
Uint16s 将 `vs` 转换并返回为 []uint16 类型的切片。
func (Vars) X取正整数32位数组 ¶
Uint32s 将 `vs` 转换并返回为 []uint32 类型的切片。
func (Vars) X取正整数64位数组 ¶
Uint64s 将 `vs` 转换并返回为 []uint64 类型的切片。