go并发编程源码 七爪源码Go中的

在这个故事中,我想分享我在编组 Json 结构时使用 Go 的经验之一。

go并发编程源码 七爪源码Go中的(1)

package mainimport ( "encoding/json" "log" )type car struct { name string `json:"name"` color string `json:"color"` seats int `json:"seats"` }func main() { c := car{name: "toyota", color: "white", seats: 5} byteArray, err := json.Marshal(c) if err != nil { log.Println(err) }log.Println(string(byteArray))}

在上面的代码片段中,我们使用了一个名为 car 的结构类型。 在这里,我们尝试对结构进行编组并从 Marshal 函数打印输出 byteArray 的字符串类型。 通过这样做,我们可以确认我们检索到的数据与我们尝试编组的数据相同。

当我们运行这个程序时,我们看到的结果不是我们试图编组的结果。

输出: {}

这是因为我们传递给 Marshal 函数的结构字段是未导出的。 Marshal 函数无法访问导致上述输出的未导出字段。

现在这一次我们可以尝试通过导出结构中的一些字段,如下所示

package mainimport ( "encoding/json" "log" )type car struct { Name string `json:"name"` Color string `json:"color"` seats int `json:"seats"` }func main() { c := car{Name: "toyota", Color: "white", seats: 5} byteArray, err := json.Marshal(c) if err != nil { log.Println(err) }log.Println(string(byteArray))}

在上面的代码片段中,我们导出了 Name 和 Color 字段,这导致了以下输出

输出:{“name”:”toyota”,”color”:”white”}

我们可以从上面的输出中观察到,只有导出的字段才能被 Marshalling 函数访问。

因此,我们需要确保我们传递给 Marshal 函数的字段应该被导出,如果不是那些外部包无法访问的字段。

感谢您的阅读! 如果您喜欢这个,请关注并订阅我的个人资料以获取更多故事

关注七爪网,获取更多APP/小程序/网站源码资源!

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页