Generic - Usage

Basic Usage

package main

import (
    "github.com/gogf/gf/v2/frame/g"
    "fmt"
)

func main() {
    var v g.Var

    v.Set("123")

    fmt.Println(v.Val())

    // Basic type conversion
    fmt.Println(v.Int())
    fmt.Println(v.Uint())
    fmt.Println(v.Float64())

    // Slice conversion
    fmt.Println(v.Ints())
    fmt.Println(v.Floats())
    fmt.Println(v.Strings())
}

After execution, the output is:

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

JSON Serialization/Deserialization

The gvar.Var container implements the serialization/deserialization interface of the standard library json data format.

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

After execution, the output is:

    {"Id":1,"Name":"john","Scores":[100,99,98]}
  1. 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)
    }

After execution, the output is:

    {1 john [100,99,98]}