结构体中的字段名首字母需大写,这样解析json时才能赋值;字段名小写的话,解析不会报错,但是字段都是空值。
另外在进行yaml配置解析时,也会出现这个问题,如果结构体的属性名定义为小写,也会出现错误。
gopkg.in/yaml.v2报错 *yaml.TypeError filed web not found int type config.ConfigHelp
在Go语言中,JSON解析和YAML解析需要将结构体的字段定义为大写,是因为字段的可导出性(Exported)问题。
JSON和YAML解析库需要通过反射(reflection)机制来解析和映射字段,而反射机制只能访问到可导出的字段。
在Go语言中,标识符的可导出性由标识符的首字母大小写来决定:
- 如果一个标识符的首字母大写,表示它是可导出的(Exported),可以被外部包访问。
- 如果一个标识符的首字母小写,表示它是私有的(Unexported),只能在同一个包内部访问。
因此,为了让JSON和YAML解析库能够访问和操作结构体的字段,这些字段必须是可导出的,即首字母大写。
网友评论