关于Go语言,自定义结构体标签的一个妙用.

来源:互联网 时间:1970-01-01

在Go中首字母大小写,决定着这此变量是否能被外部调用,

例如:在使用标准库的json编码自定一的结构的时候:

<pre style="margin-top: 0px; margin-bottom: 0px;"><span style=" font-weight:600; color:#000080;">package</span><span style=" color:#c0c0c0;"> </span>mainimport ( "encoding/json" "fmt")type T struct { name string Age int}func main() { var info T = T{"fyxichen", 24} fmt.Println("编码前:",info) b, _ := json.Marshal(info) fmt.Println("编码后:",string(b))}运行结果是:

编码前: {fyxichen 24}

编码后: {"Age":24}在这里name的值并未被编码,原因接收首字母是小写,外部不能调用导致的.

当我们用json和外部API进行交互的时候,别的程序语言不像Go这样用大小写来控制变量的作用域.所以下面这个标签的使用,会用起来更舒服.

package mainimport ("encoding/json""fmt")type T1 struct {Name stringAge int}type T2 struct {Name string `json:"name"`Age int `json:"age"`}func main() {var info1 T1 = T1{"fyxichen", 24}var info2 T2 = T2{"fyxichen", 24}b, _ := json.Marshal(info1)fmt.Println("Struct1:", string(b))b, _ = json.Marshal(info2)fmt.Println("Struct2:", string(b))}

运行结果:

Struct1 :{"Name":"fyxichen","Age":24}

Struct2 :{"name":"fyxichen","age":24}

版权声明:本文为博主原创文章,未经博主允许不得转载。



相关阅读:
Top