今天想用xorm连接数据库做一个项目,发现xorm的结构体和数据库表的映射关系的建立是通过struct Tag来实现的。所以有必要了解下Tag的语法和作用。
看代码秒懂:
1 package main
2 import (
3 "fmt"
4 "reflect" // 这里引入reflect模块
5 )
6 type User struct {
7 Name string "user name" //这引号里面的就是tag
8 Passwd string "user passsword"
9 }
10 func main() {
11 user := &User{"chronos", "pass"}
12 s := reflect.TypeOf(user).Elem() //通过反射获取type定义
13 for i := 0; i < s.NumField(); i++ {
14 fmt.Println(s.Field(i).Tag) //将tag输出出来
15 }
16 }
1 package main
2
3 import (
4 "fmt"
5 "reflect"
6 )
7
8 func main() {
9 type S struct {
10 F string `species:"gopher" color:"blue"`
11 }
12
13 s := S{}
14 st := reflect.TypeOf(s)
15 field := st.Field(0)
16 fmt.Println(field.Tag.Get("color"), field.Tag.Get("species"))
17
18 }