goLang获取struct的tag内容;beego的ORM中也通过tag来定义参数的。
获取tag的内容是利用反射包来实现的。示例代码如下:
package main
import ("fmt""reflect" // 这里引入reflect模块
)
type User struct {Name string "user name" //这引号里面的就是tagPasswd string "user passsword"
}
func main() {user := &User{"chronos", "pass"}s := reflect.TypeOf(user).Elem() //通过反射获取type定义for i := 0; i < s.NumField(); i++ {fmt.Println(s.Field(i).Tag) //将tag输出出来}
}
golang.org中reflect的示例代码
package mainimport ("fmt""reflect"
)func main() {type S struct {F string `species:"gopher" color:"blue"`}s := S{}st := reflect.TypeOf(s)field := st.Field(0)fmt.Println(field.Tag.Get("color"), field.Tag.Get("species"))}