Go结构体字段同时初始化与指定JSON标签的语法错误及解决方案
解决Go Struct字段同时设置自定义标签与JSON标签的语法问题
嘿,我来帮你搞定这个编译报错的问题!你之所以会遇到语法错误,核心原因是Go语言里的字段标签必须放在同一个反引号对中,多个不同用途的标签之间用空格分隔,不能分开写两组反引号,也不能混用双引号和反引号。
正确的写法示例
把你需要的两个标签(比如注释类标签和JSON标签)放在同一个反引号里,用空格分开:
type Person struct { CategoryId string `comment:"Generic" json:"category_id"` Name string `json:"name"` Surname string `json:"surname"` }
为什么之前的写法会报错?
你之前的代码里,"Generic"是用双引号写的,Go编译器会把它当成字段的初始化值——但在struct的类型定义阶段,是不能直接给字段赋值的(赋值要在创建struct实例时做),所以后面跟上的json:"category_id"就成了多余的语法元素,直接触发编译错误。
另外要提一句:早期Go确实有过用双引号写字段注释的写法,但那已经是被废弃的用法了,现在Go官方推荐的所有字段标签(不管是JSON、XML还是自定义注释标签),都统一用反引号包裹,格式为key:"value",多个标签之间用空格分隔。
额外建议:提升代码可读性
如果你的"Generic"只是用来做字段的注释说明,其实更推荐直接在字段上方写行注释,这样可读性更高,也符合Go的编码规范:
type Person struct { // CategoryId 属于Generic类型 CategoryId string `json:"category_id"` Name string `json:"name"` Surname string `json:"surname"` }
内容的提问来源于stack exchange,提问作者Spyros K
相关产品推荐
相关产品推荐

