我试图分析 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 关注
- 114 浏览
添加回答
举报
0/150
提交
取消