Versioonide võrdlemine

Selgitus

  • See rida lisati.
  • See rida eemaldati.
  • Vorminduse muutmine.

Image Added

基本介绍

通用动态变量,支持各种内置的数据类型转换,可以作为

gvar是一种运行时泛型实现,以较小的运行时开销提高开发便捷性以及研发效率,支持各种内置的数据类型转换,可以作为

interface{}类型的替代数据类型,并且该类型支持并发安全开关。

Tips:
Tip

框架同时提供了g.Var的数据类型,其实也是gvar.Var数据类型的别名。

使用场景

使用interface{}的场景,各种不固定数据类型格式,或者需要对变量进行频繁的数据类型转换的场景。

使用方式

import "github.com/gogf/gf/v2/container/gvar"

接口文档

https://

godoc

pkg.

org/github.com/gogf/gf/container/gvar

基本使用

package main import ( "

go.dev/github.com/gogf/gf/

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) }

v2/container/gvar

相关文档

Children Display
alltrue
excerptTypesimple

执行后,输出结果为:

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
    titleContent Menu

    Table of Contents