亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在此行“binTag := field.Tag.Get(”binary”)”之后分配給

在此行“binTag := field.Tag.Get(”binary”)”之后分配給

Go
拉風的咖菲貓 2023-05-15 15:01:14
我試圖分析 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


查看完整回答
反對 回復 2023-05-15
  • 1 回答
  • 0 關注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號