大写影响 CouchDB 结构中的数据存储
使用“github.com/mikebell-org/go-couchdb”库访问时CouchDB,出现一个奇怪的问题:只有首字母大写的结构字段才会在数据库中更新
示例:
type Person struct { name string Age int }
将 Person 实例插入数据库时:
joe := Person{ name: "mike", Age: 190, }
仅将 Age 字段添加到数据库。其他小写字段,如名称,将被省略。
行为背后的原因:
此行为源于 Go 语言规范,该规范规定首字母小写的字段信件不会被导出。因此,JSON 序列化包(例如 json)仅在明确指示的情况下包含这些字段。
克服问题:
合并小写字段进入数据库,利用 JSON 标签:
type Person struct { name string `json:"name"` Age int `json:"Age"` }
通过指定 json 标签,显式暴露小写名称字段用于 JSON 序列化,允许其持久保存在数据库中。有关 JSON 标签的更多详细信息,请参阅文档。
以上是为什么使用 go-couchdb 在 CouchDB 中仅更新大写的结构字段?的详细内容。更多信息请关注PHP中文网其他相关文章!