Versioonide võrdlemine
võrreldes
Selgitus
- See rida lisati.
- See rida eemaldati.
- Vorminduse muutmine.
Image Added
基本介绍
通用动态变量
,支持各种内置的数据类型转换,可以作为gvar
是一种运行时泛型实现,以较小的运行时开销提高开发便捷性以及研发效率,支持各种内置的数据类型转换,可以作为
interface{}
类型的替代数据类型,并且该类型支持并发安全开关。
Tip |
---|
框架同时提供了 |
使用场景:
使用interface{}
的场景,各种不固定数据类型格式,或者需要对变量进行频繁的数据类型转换的场景。
使用方式:
import "github.com/gogf/gf/v2/container/gvar"
接口文档:
godocorg/github.com/gogf/gf/container/gvar基本使用
package main import ( "frame/g" "fmt" ) func main() { var v g.Var v.Set("123") fmt.Println(v.Val()) // 基本类型转换 fmt.Println(v.Int()) fmt.Println(v.Uint()) fmt.Println(v.Float64()) // slice转换 fmt.Println(v.Ints()) fmt.Println(v.Floats()) fmt.Println(v.Strings()) // struct转换 type Score struct { Value int } s := new(Score) v.Struct(s) fmt.Println(s) }相关文档
Children Display | ||||
---|---|---|---|---|
|
执行后,输出结果为:
123
123
123
123
[123]
[123]
[123]
&{123}
JSON
序列化/反序列
gvar.Var
容器实现了标准库json
数据格式的序列化/反序列化接口。
Marshal
package main
import (
"encoding/json"
"fmt"
"github.com/gogf/gf/frame/g"
)
func main() {
type Student struct {
Id *g.Var
Name *g.Var
Scores *g.Var
}
s := Student{
Id: g.NewVar(1),
Name: g.NewVar("john"),
Scores: g.NewVar([]int{100, 99, 98}),
}
b, _ := json.Marshal(s)
fmt.Println(string(b))
}
执行后,输出结果:
{"Id":1,"Name":"john","Scores":[100,99,98]}
Unmarshal
package main
import (
"encoding/json"
"fmt"
"github.com/gogf/gf/frame/g"
)
func main() {
b := []byte(`{"Id":1,"Name":"john","Scores":[100,99,98]}`)
type Student struct {
Id *g.Var
Name *g.Var
Scores *g.Var
}
s := Student{}
json.Unmarshal(b, &s)
fmt.Println(s)
}
执行后,输出结果:
{1 john [100,99,98]}
Panel | ||
---|---|---|
| ||
|