struct tag
struct tag
import (
"encoding/json"
"fmt"
"reflect"
)
type T struct {
f1 string "f one"
f2 string
f3 string `f three 123`
f4, f5 int64 `one:"1" two:"2"blank:""`
Name string `json:"name"` //注意要大寫開頭命名
na int `json:"na"` //小寫開頭命名json會被丟棄
}
func main() {
t := reflect.TypeOf(T{})
f1, _ := t.FieldByName("f1")
fmt.Println(f1.Tag) // f one
f4, _ := t.FieldByName("f4")
fmt.Println(f4.Tag) // one:"1" two:"2"blank:""
f5, _ := t.FieldByName("f5")
fmt.Println(f5.Tag) // one:"1" two:"2"blank:"" 共用 同上
v, ok := f5.Tag.Lookup("one")
fmt.Printf("%s, %t\n", v, ok) //1, true
tt := T{"1", "0", "2", 3, 6, "kiki", 6}
b, err := json.Marshal(tt)
if err != nil {
panic(err)
}
fmt.Printf("%s\n", b) //{"name":"kiki"} 只有json tag會被解析出來
}json/bson/swagger 用到的範例
參考及延伸文章:
Last updated