GoLang获取struct的tag内容;beego的ORM中也通过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 }
Golang.org中reflect的示例代码
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 }
有疑问加站长微信联系(非本文作者)