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 }