type Config struct {
CommitIndex uint64 `json:"commitIndex"`
// TODO decide what we need to store in peer struct
Peers []*Peer `json:"peers"`
}
Run Code Online (Sandbox Code Playgroud)
我理解前两列是什么,但是什么是json:"commitIndex"?
One*_*One 35
它被称为struct标记,可以reflect在运行时使用包解析它们.
来自https://golang.org/ref/spec#Struct_types:
字段声明后面可以跟一个可选的字符串文字标记,该标记成为相应字段声明中所有字段的属性.
标签通过反射界面可见,并参与结构的类型标识,否则将被忽略.
一些使用反射的包json并xml使用标签来更好地处理特殊情况.
ANi*_*sus 15
你所指的是一个标签,Go规范说明:
字段声明后面可以跟一个可选的字符串文字标记,该标记成为相应字段声明中所有字段的属性.标签通过反射界面可见,并参与结构的类型标识,否则将被忽略.
// 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"
}
Run Code Online (Sandbox Code Playgroud)
这在编译时不起作用,但在对结构进行运行时反射时由不同的包使用.正如Amit已经指出的那样,encoding/json软件包正在使用它来指定编组/解组行为.这同样有encoding/xml,gopkg.in/mgo.v2/bson等等.
按照惯例,标记字符串是空格分隔的字符串.如reflect包中所述:
按照惯例,标记字符串是可选的空格分隔的键:"值"对的串联.每个键都是一个非空字符串,由空格(U + 0020''),引号(U + 0022'"')和冒号(U + 003A':')以外的非控制字符组成.每个值都被引用使用U + 0022'"'字符和Go字符串文字语法.
| 归档时间: |
|
| 查看次数: |
4803 次 |
| 最近记录: |