我可以将指针和值嵌入到 golang 中。通过指针type Bitmap struct{ data [4][4]bool}type Renderer struct{ *Bitmap on uint8 off uint8}按价值type Bitmap struct{ data [4][4]bool}type Renderer struct{ Bitmap on uint8 off uint8}指针或值更喜欢什么?
3 回答
慕姐4208626
TA贡献1852条经验 获得超7个赞
这取决于。这里有几种可能性。
如果 Renderer 是按值传递的,并且您需要在 Bitmap 上的方法在 *Bitmap 上定义,那么您需要嵌入 *Bitmap。
如果 Renderer 作为指针传递,那么您可以毫无问题地将 Bitmap 作为值嵌入(在这种情况下仍然可以访问指针方法)。
如果 Bitmap 具有返回指针的构造函数,并且 Bitmap 的零值不可用,则您需要嵌入 *Bitmap,因为您不想鼓励按值复制 Bitmap 值。
如果所有 Bitmap 方法都是值方法,那么您肯定要按值嵌入。
在您这里的特定情况下,我可能会按值嵌入,因为类型很小 - 它为您提供访问位置和更少的内存分配。
温温酱
TA贡献1752条经验 获得超4个赞
通过嵌入类型,您通常希望从呼叫转移中受益。*Bitmap
的方法集是一个超集的Bitmap
的方法集。所以在大多数情况下你会想要 embed *Bitmap
,除非它的所有方法都有一个类型的接收器Bitmap
或者方法将它设置为空,在这种情况下你可以避免间接。
- 3 回答
- 0 关注
- 151 浏览
添加回答
举报
0/150
提交
取消