type NetworkInterface struct {
Gateway string `json:"gateway"`
IPAddress string `json:"ip"`
IPPrefixLen int `json:"ip_prefix_len"`
MacAddress string `json:"mac"`
...
}
我很难混淆内容在反引号中的功能,例如json:"gateway"
。
只是评论,例如//this is the gateway
?
答案 0 :(得分:66)
他们是tags:
字段声明后面可以跟一个可选的字符串文字标记, 它成为相应的所有字段的属性 现场申报。标签通过反射可见 接口并参与结构的类型标识,但不是 忽略。
// A struct corresponding to the TimeStamp protocol buffer. // The tag strings define the protocol buffer field numbers. struct { microsec uint64 "field 1" serverIP6 uint64 "field 2" process string "field 3" }
有关更详细的说明和答案,请参阅this question and answer。
back quotes用于创建可包含任何类型字符的原始字符串文字:
原始字符串文字是后引号之间的字符序列``。 在引号内,任何字符都是合法的,除了反引号。
答案 1 :(得分:53)
您可以以标记的形式向Go结构添加额外的元信息。 Here are some examples of use cases
在这种情况下,json package使用json:"gateway"
将Gateway
的值编码到相应json对象中的键gateway
中。
示例:
n := NetworkInterface{
Gateway : "foo"
}
json.Marshal(n)
// will output `{"gateway":"foo",...}`