基本使用

package main

import (
    "github.com/gogf/gf/v2/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())
}

执行后,输出结果为:

123
123
123
123
[123]
[123]
[123]

JSON序列化/反序列

gvar.Var容器实现了标准库json数据格式的序列化/反序列化接口。

  1. Marshal

     package main
    
     import (
         "encoding/json"
         "fmt"
         "github.com/gogf/gf/v2/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]}
  2. Unmarshal

     package main
    
     import (
         "encoding/json"
         "fmt"
         "github.com/gogf/gf/v2/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]}






Content Menu

  • No labels

1 Comment

  1. 看了半天, 感觉gvar组件, 完全可以替代gconv组件, 是不是这样? 有没有什么场景必须要gconv组件的.