Documentation
¶
Overview ¶
gvar 包提供了一个通用变量类型,类似于泛型。 md5:edfcd2c00687a1cf
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(option ...MapOption) map[string]interface{}
- func (v *Var) X取Map数组(选项 ...MapOption) []map[string]interface{}
- func (v *Var) X取any数组() []interface{}
- func (v *Var) X取gtime时间类(format ...string) *gtime.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取整数8位() int8
- 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取整数数组() []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取正整数8位() uint8
- 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取正整数数组() []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设置值(value interface{}) (old interface{})
- type Vars
- func (vs Vars) X取any数组() (s []interface{})
- func (vs Vars) X取小数32位数组() (数组 []float32)
- func (vs Vars) X取小数64位数组() (数组 []float64)
- func (vs Vars) X取整数8位数组() (数组 []int8)
- func (vs Vars) X取整数16位数组() (数组 []int16)
- func (vs Vars) X取整数32位数组() (数组 []int32)
- func (vs Vars) X取整数64位数组() (数组 []int64)
- func (vs Vars) X取整数数组() (s []int)
- func (vs Vars) X取文本数组() (s []string)
- func (vs Vars) X取正整数8位数组() (数组 []uint8)
- func (vs Vars) X取正整数16位数组() (数组 []uint16)
- func (vs Vars) X取正整数32位数组() (数组 []uint32)
- func (vs Vars) X取正整数64位数组() (数组 []uint64)
- func (vs Vars) X取正整数数组() (s []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 是一个通用变量类型的实现者。 md5:8d1126ac62635ed2
func (*Var) Array别名 ¶
func (v *Var) Array别名() []interface{}
Array别名是Interfaces的别名。 md5:137944f64a8b7b89
func (*Var) DeepCopy ¶
func (v *Var) DeepCopy() interface{}
DeepCopy实现当前类型的深拷贝接口。 md5:9cfbcb08109f6ce1
func (*Var) Interface ¶
func (v *Var) Interface() interface{}
Interface 是 Val 的别名。 md5:7ddc9573cd7d9927
Example ¶
Interface
package main
import (
gvar "github.com/888go/goframe/container/gvar"
"github.com/888go/goframe/frame/g"
)
func main() {
var v = gvar.X创建(100.00)
g.X调试输出并带类型(v.Interface())
}
Output: float64(100)
func (*Var) MapDeep弃用 ¶
MapDeep弃用 递归地将 `v` 转换为 map[string]interface{} 并返回。 提示:已使用 Map 函数代替。 md5:1a45b51f1c84bb44
func (*Var) MapStrStrDeep弃用 ¶
MapStrStrDeep弃用 递归地将 `v` 转换并返回为 map[string]string 类型。 已废弃:请使用 MapStrStr 函数代替。 md5:9f5885f5e2b8a6e4
func (*Var) MapToMap ¶
MapToMap 将任意映射类型变量 `params` 转换为另一个映射类型变量 `pointer`。 参见 gconv.MapToMap。 md5:bc3ef5f9ee0920e7
Example ¶
MapToMap
package main
import (
"fmt"
gvar "github.com/888go/goframe/container/gvar"
"github.com/888go/goframe/frame/g"
)
func main() {
var (
m1 = gvar.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 将任何类型的映射变量 `params` 转换为另一个映射类型变量 `pointer`。 参考 gconv.MapToMaps。 md5:1bd0da08c8937a10
Example ¶
MapToMaps
package main
import (
"fmt"
gvar "github.com/888go/goframe/container/gvar"
"github.com/888go/goframe/frame/g"
)
func main() {
var (
p1 = g.MapStrAny{"product": g.Map{"id": 1, "price": 100}}
p2 = g.MapStrAny{"product": g.Map{"id": 2, "price": 200}}
v = gvar.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 将任何映射类型变量 `params` 递归地转换为另一个映射类型变量 `pointer`。 参考 gconv.MapToMapsDeep。 md5:77546446f168a41a
Example ¶
MapToMapsDeep
package main
import (
"fmt"
gvar "github.com/888go/goframe/container/gvar"
"github.com/888go/goframe/frame/g"
)
func main() {
var (
p1 = g.MapStrAny{"product": g.Map{"id": 1, "price": 100}}
p2 = g.MapStrAny{"product": g.Map{"id": 2, "price": 200}}
v = gvar.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 替代。 md5:10c733fd844f279f
func (Var) MarshalJSON ¶
MarshalJSON 实现了接口 MarshalJSON 以供 json.Marshal 使用。 md5:43c3b36e60a18f9a
Example ¶
MarshalJSON
package main
import (
gvar "github.com/888go/goframe/container/gvar"
"github.com/888go/goframe/frame/g"
"github.com/888go/goframe/internal/json"
)
func main() {
testMap := g.Map{
"code": "0001",
"name": "Golang",
"count": 10,
}
var v = gvar.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) Slice别名 ¶
func (v *Var) Slice别名() []interface{}
Slice别名 是 Interfaces 的别名。 md5:94e5a660c49c5e34
func (*Var) String ¶
String 将 `v` 转换为字符串并返回。 md5:773073091c0b6fb0
Example ¶
String
package main
import (
gvar "github.com/888go/goframe/container/gvar"
"github.com/888go/goframe/frame/g"
)
func main() {
var v = gvar.X创建("GoFrame")
g.X调试输出并带类型(v.String())
}
Output: string(7) "GoFrame"
func (*Var) Struct ¶
Struct 将值`v`映射到`pointer`。 参数`pointer`应为指向结构体实例的指针。 参数`mapping`用于指定键到属性的映射规则。 md5:a5bf066b3ef1c653
Example ¶
package main
import (
gvar "github.com/888go/goframe/container/gvar"
"github.com/888go/goframe/frame/g"
)
func main() {
params1 := g.Map{
"uid": 1,
"Name": "john",
}
v := gvar.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` 转换并返回为指定结构体切片。 md5:396a4079aac15c40
Example ¶
package main
import (
gvar "github.com/888go/goframe/container/gvar"
"github.com/888go/goframe/frame/g"
)
func main() {
paramsArray := []g.Map{}
params1 := g.Map{
"uid": 1,
"Name": "golang",
}
params2 := g.Map{
"uid": 2,
"Name": "java",
}
paramsArray = append(paramsArray, params1, params2)
v := gvar.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方法。 md5:f6766b88cf3d63c2
Example ¶
UnmarshalJSON
package main
import (
gvar "github.com/888go/goframe/container/gvar"
"github.com/888go/goframe/frame/g"
"github.com/888go/goframe/internal/json"
)
func main() {
tmp := []byte(`{
"Code": "0003",
"Name": "Golang Book3",
"Quantity": 3000,
"Price": 300,
"OnSale": true
}`)
var v = gvar.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。 md5:c6a2fce2313ec90f
Example ¶
UnmarshalValue
package main
import (
gvar "github.com/888go/goframe/container/gvar"
"github.com/888go/goframe/frame/g"
)
func main() {
tmp := g.Map{
"code": "00002",
"name": "GoFrame",
"price": 100,
"sale": true,
}
var v = gvar.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 ¶
X取MapStrAny 类似于 Map 函数,但它实现了 X取MapStrAny 接口。 md5:f7cf0af70c8cbee9
func (*Var) X取Map数组 ¶
X取Map数组 将 `v` 转换为 map[string]string 类型并返回。参考 gconv.X取Map数组。 md5:0240a1ad5bd80743
func (*Var) X取any数组 ¶
func (v *Var) X取any数组() []interface{}
X取any数组 将 `v` 转换并返回为 []interface{}。 md5:8b6ea8b55919ad7a
func (*Var) X取gtime时间类 ¶
X取gtime时间类将`v`转换为*gtime.Time并返回。 参数`format`使用gtime指定时间字符串的格式,例如:Y-m-d H:i:s。 md5:0809b54d564e1570
func (*Var) X取时长 ¶
X取时长 将 `v` 转换并返回为 time.X取时长 类型。 如果 `v` 的值为字符串,那么它会使用 time.ParseDuration 进行转换。 md5:202e87ef6d521c17
func (*Var) X取时间类 ¶
X取时间类 将 `v` 转换并返回为 time.X取时间类 类型。 参数 `format` 使用 gtime 指定时间字符串的格式, 例如:Y-m-d H:i:s。 md5:f8b0cb9b11c12546
func (*Var) X取正整数64位数组 ¶
X取正整数64位数组 将 `v` 转换为 []uint64 并返回。 md5:b4b77de84a5454a9
func (*Var) X取泛型类Map_递归 ¶
X取泛型类Map_递归 递归地将`v`转换并返回为map[string]*Var。 注意:请使用MapStrVar代替。 md5:b37116aff42f6b15
func (*Var) X取结构体指针 ¶
X取结构体指针 自动检查`pointer`的类型,并将`params`转换为`pointer`。它支持`pointer`类型,包括`*map`、`*[]map`、`*[]*map`、`*struct`、`**struct`、`[]struct`和`[]*struct`。
参见gconv.X取结构体指针。 md5:7f6cfec69999319d
func (*Var) X取结构数组或Map数组值 ¶
func (v *Var) X取结构数组或Map数组值(名称 interface{}) (值s []interface{})
X取结构数组或Map数组值 获取并返回所有项结构体/映射中键为`key`的元素。 注意,参数`list`应该是包含映射或结构体元素的切片类型, 否则将返回一个空切片。 md5:22a160e15c6a6d6c
func (*Var) X取结构数组或Map数组值并去重 ¶
X取结构数组或Map数组值并去重 获取并返回具有键为`key`的所有结构体/映射的独特元素。 请注意,参数`list`应为包含映射或结构体元素的切片类型,否则将返回一个空切片。 md5:0f361d3ff901d0a1
type Vars ¶
type Vars []*Var
Vars是一个*Var类型的切片。 md5:e8d9e194fa744a27
func (Vars) X取any数组 ¶
func (vs Vars) X取any数组() (s []interface{})
X取any数组 将 `vs` 转换并返回为 []interface{} 类型。 md5:6fe626226748e2c9
func (Vars) X取正整数16位数组 ¶
X取正整数16位数组 将 `vs` 转换为 []uint16 并返回。 md5:14a5805ab12b7fbe
func (Vars) X取正整数32位数组 ¶
X取正整数32位数组 将 `vs` 转换为 []uint32 并返回。 md5:432ace9bd7f4941e
func (Vars) X取正整数64位数组 ¶
X取正整数64位数组 将 `vs` 转换并返回为 []uint64 类型的切片。 md5:4c19a53bd828ba63