您的位置:首页 > 编程语言 > Go语言

go语言struct中的tag

2018-03-22 22:12 253 查看
一句话总结:方便通过tag获取struct的成员变量

为什么要有tag

go语言中命名都是推荐都是用驼峰方式,但是由于实际项目中经常需要和其它的系统进行数据交互,这个时候如果用属性名来作为键值可能不一定会符合项目要求。如代码中对象的结构体的成员变量和数据库表中的列名的映射关系的建立是通过struct Tag来实现的。

如何获取tag

直接上实例吧

package main

import (
"fmt"

"encoding/json"
"reflect"
)

type Person struct {
Name string `name`
Age int `age`
Addr string `China:"beijing"` //beijing一定要有冒号,否则认为是个字符串,不会认为是个map
phone string `phone`
}

func main() {
person := &Person{Name:"simon", Age:22, Addr:"road88"}

jsonData, err := json.Marshal(person) //成员必须大写可见
if err != nil {
panic("json Marshl err")
}
fmt.Println("phone member is invisible.")
fmt.Println(string(jsonData))

reflectType := reflect.TypeOf(person)
field := reflectType.Elem().Field(0)
fmt.Println("field 0 tag:", field.Tag)

field = reflectType.Elem().Field(2)
fmt.Println("field 2 tag:", field.Tag)
fmt.Println("field 2 tag:", field.Tag.Get("China"))

field = reflectType.Elem().Field(3)
fmt.Println("field 3 tag:", field.Tag)
}


运行结果

phone member is invisible.

{“Name”:”simon”,”Age”:22,”Addr”:”road88”}

field 0 tag: name

field 2 tag: China:”beijing”

field 2 tag: beijing

field 3 tag: phone

Process finished with exit code 0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  go tag