我想在结构体中声明一个变量,对其进行初始化,同时为其声明一个自定义json名称。但是,编译器总是返回语法错误。
例如,可以在结构声明期间初始化值
type Person struct {
CategoryId string "Generic"
Name string `json:"name"`
Surname string `json:"surname"`
}
可以声明一个自定义的json名称。
type Person struct {
CategoryId string `json:"category_id"`
Name string `json:"name"`
Surname string `json:"surname"`
}
但是以下代码返回错误
type Person struct {
CategoryId string "Generic" `json:"category_id"`
Name string `json:"name"`
Surname string `json:"surname"`
}
返回的错误如下
语法错误:意外的文字
json:"category_id"
,期望用分号或换行符或}
正确的语法是什么?我尝试了以下几种组合:
type Person struct {
CategoryId string "Generic" `json:"category_id"`;
Name string `json:"name"`
Surname string `json:"surname"`
}
type Person struct {
CategoryId string "Generic"; `json:"category_id"`
Name string `json:"name"`
Surname string `json:"surname"`
}
但是以上都不是正确的语法。我也希望获得指向我可以阅读更多有关此语法的链接。
此字段声明:
CategoryId string "Generic"
是不是初始化(你不能在类型声明中转到字段指定默认值)。最后的字符串文字"Generic"
是字段的标签值。与此相同:
CategoryId string `Generic`
不管使用原始字符串还是解释字符串文字,都可以在此仅提供一个文字,它就是该字段的标签。
如果要为单个字段提供多个标记值,则按照惯例,必须在单个文字中用空格分隔它们,例如:
CategoryId string `Generic json:"category_id"`
语法在Spec:结构类型中有详细说明:
字段声明后可以跟一个可选的字符串文字标签,该标签成为相应字段声明中所有字段的属性。空标签字符串等效于缺少标签。通过反射接口使标签可见,并参与结构的类型标识,但否则将被忽略。
有关概述,更多详细信息和约定,我强烈建议阅读以下相关问题:Go中标记的用途是什么?
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句