在Golang中使用struct成员是常见的吗?
发布时间:2020-12-16 19:26:38 所属栏目:大数据 来源:网络整理
导读:以 go github package为例.几乎每个定义的结构的每个成员都是一个指向值而不是值的指针. 这是惯用的Go吗?为什么? 我知道它减少了结构的大小(假设指针的大小小于它指向的值的大小),如果你通过值大量传递结构,这可能很重要.但是为什么不使用值结构并通过指针
以
go github package为例.几乎每个定义的结构的每个成员都是一个指向值而不是值的指针.
这是惯用的Go吗?为什么? 我知道它减少了结构的大小(假设指针的大小小于它指向的值的大小),如果你通过值大量传递结构,这可能很重要.但是为什么不使用值结构并通过指针传递结构呢?
在github包中,原因是大多数结构都是从github api的json序列化/反序列化的.
他们使用* int而不是int的原因是因为指针的零值是nil,而int的零值是0.它允许客户端在“此字段未包含在响应中”和“值之间”之间存在差异该字段为零“. 这对于像时间这样的事情特别有用,如果你没有nilable类型,你最终会得到很多00-00-0000类型的日期. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |