Versioner sammenlignet

Nøgle

  • Linjen blev tilføjet.
  • Denne linje blev fjernet.
  • Formatering blev ændret.

gvar

...

Image Added

基本介绍

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

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

...

Tip

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

使用场景

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

使用方式

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

...

接口文档

https://

...

...

基本使用

package main

import (
    "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)
}

执行后,输出结果为:

123
123
123
123
[123]
[123]
[123]
&{123}

JSON序列化/反序列

gvar.Var容器实现了标准库json数据格式的序列化/反序列化接口。 1. Marshal “`go 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)
}

执行后,输出结果:

相关文档

Children Display
alltrue
excerptTypesimple








Panel
titleContent Menu

Table of Contents

...