go语言struct中的tag
2018-03-22 22:12
253 查看
一句话总结:方便通过tag获取struct的成员变量
{“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
为什么要有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
相关文章推荐
- golang <转>Go语言struct tag介绍
- 8.笔记go语言——复杂类型struct,slice,map
- go语言之行--结构体(struct)详解、链表
- Go struct tag深入理解
- Go语言struct类型介绍
- Go(5 [struct | tag | 方法 | 继承 ])
- go语言中结构struct
- 使用 Go 的 struct tag 来解析版本号字符串
- GO语言练习:struct基础练习
- go语言学习之struct初认识
- Go语言学习笔记4——struct
- GO语言使用orm时,struct作为json输出,指定key的字符串
- Go语言,struct结构体的那些奇怪的用法
- Go语言核心之美 3.4-Struct结构体
- Go语言基础:struct
- Go语言学习笔记 --- struct
- Go语言中struct的匿名属性特征
- Go语言学习四:struct类型
- Go:Struct Tag
- go语言[6] struct,JSON,文本和html模板