我試圖分析 GO 程序,當我遇到這一行“binTag := field.Tag.Get("binary")”時,我對“binTag”將被分配的 值感到困惑。我在 GO reflect Package 中搜索了語法解釋,我發現了這個,func (tag StructTag) Get(key string) 字符串Get 返回與標記字符串中的鍵關聯的值。如果標簽中沒有這樣的鍵,Get 返回空字符串。如果標簽沒有常規格式,則 Get 返回的值是未指定的。要確定標記是否明確設置為空字符串,請使用 Lookup。然后我搜索了 Golang 中 Tag 的意思,例如我得到了這個標簽字段聲明后面可以跟一個可選的字符串文字(標記),它成為相應字段聲明中所有字段的屬性。type T struct { f1 string "f one" f2 string f3 string `f three` f4, f5 int64 `f four and five`}所以,現在我對執行后分配給“binTag”的確切值有點困惑。提前致謝。
1 回答

元芳怎么了
TA貢獻1798條經驗 獲得超7個贊
值binTag
是""
因為標簽不包含鍵“binary”的值,標簽也不遵循格式化結構標簽的約定。
此代碼顯示如何訪問標簽:
v := reflect.TypeOf(T{})
sf, _ := v.FieldByName("f1")
fmt.Println(sf.Tag)? ? ? ? ? ? ? ?// prints "f one"
fmt.Println(sf.Tag.Get("binary")) // prints blank line
下面是一個帶有鍵“binary”的有效標簽的示例:
type U struct {
? ? g1 string `binary:"hello"`
}
v := reflect.TypeOf(U{})
sf, _ := v.FieldByName("g1")
fmt.Println(sf.Tag)? ? ? ? ? ? ? ?// prints binary:"hello"
fmt.Println(sf.Tag.Get("binary")) // prints hello
- 1 回答
- 0 關注
- 142 瀏覽
添加回答
舉報
0/150
提交
取消