要求客户端代码导出以获得此功能感到不幸,特别是如果小写提供封装或决定元帅结构比设计更晚的时候。
人们如何处理这个?只是导出一切?
此外,不导出字段名称使其难以遵循建议的成语。我认为如果一个结构X有字段Y,你不能有一个访问器方法Y()。如果你想提供接口访问Y,你必须拿出一个新的名字为getter,无论你会得到什么不成语根据http://golang.org/doc/effective_go.html#Getters
有一个技术原因。 Json库没有权力使用reflect来查看字段,除非它们被导出。包只能查看自己包中类型的未导出字段为了处理你的问题,你可以做一个具有导出字段的未导出类型。如果传递给它没有问题,Json将解组成一个未导出的类型,但不会显示在api文档中。然后,您可以创建嵌入未导出类型的导出类型。这个导出的类型将需要实现Json.Marshaler和Json.Unmarshaler接口的方法。
注意:所有代码未经测试,甚至可能不编译。
type JsonData struct { FIEld1 string FIEld2 string}type JsonData struct { JsonData}// Implement Json.Unmarshallerfunc (d *JsonData) UnmarshalJsON(b []byte) error { return Json.Unmarshal(b,&d.JsonData)}// Getterfunc (d *JsonData) FIEld1() string { return d.JsonData.FIEld1}总结
以上是内存溢出为你收集整理的golang json和处理未导出的字段全部内容,希望文章能够帮你解决golang json和处理未导出的字段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)