golang结构体中使用tag标记
简介
我们可以在结构体的字段后面,添加一些对该字段的说明(元信息meta),程序通过反射解析这些信息并使用。
语法结构
`key:"value" key:"value"`
反引号括起来,key不加双引号,value加双引号,多个值中间用空格分开
快速入门
package main
import (
"fmt"
"reflect"
)
func main() {
type S struct {
F string `species:"gopher" color:"blue"`
}
//实例化结构体,在这里没有使用到,所以空实例化
s := S{
}
//使用反射获得结构体的type类型
st := reflect.TypeOf(s)
//拿到第一个字段
field := st.Field(0)
//拿到tag里面的东西
fmt.Println(field.Tag.Get("color"), field.Tag.Get("species"))
}
运行结果:
[Running] go run "e:\golang开发学习\go_pro\main.go"
blue gopher
[Done] exited with code=0 in 1.234 seconds
常见应用
应用json编码
package main
import (
"encoding/json"
"fmt"
"log"
"os"
"time"
)
//一般我们字段名都是大写的,但是我们json里面都是小写的,这里就可以通过tag来使用小写来知道大写的字段
type User struct {
Name string `json:"name"`
Password string `json:"password"`
CreatedAt time.Time `json:"createdAt"`
}
func main() {
u := &User{
Name: "Psych",
Password: "123456",