登录
首页 >  Golang >  Go问答

用指针或值嵌入 Go

来源:Golang技术栈

时间:2023-04-08 13:00:47 318浏览 收藏

偷偷努力,悄无声息地变强,然后惊艳所有人!哈哈,小伙伴们又来学习啦~今天我将给大家介绍《用指针或值嵌入 Go》,这篇文章主要会讲到golang等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!

问题内容

我可以用指针和值嵌入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
}

指针或值更喜欢什么?

正确答案

这取决于。这里有几种可能性。

  • 如果 Renderer 是按值传递的,并且在 Bitmap 上需要的方法是在 *Bitmap 上定义的,那么你需要嵌入 *Bitmap。
  • 如果 Renderer 作为指针传递,那么您可以毫无问题地将 Bitmap 作为值嵌入(在这种情况下仍然可以访问指针方法)。
  • 如果 Bitmap 有一个返回指针的构造函数,并且 Bitmap 的零值不可用,则您需要嵌入 *Bitmap,因为您不想鼓励按值复制 Bitmap 值。
  • 如果所有的 Bitmap 方法都是值方法,那么你肯定要按值嵌入。

在您在这里的特定情况下,我可能会按值嵌入,因为类型很小-它为您提供了访问的局部性和更少的内存分配。

终于介绍完啦!小伙伴们,这篇关于《用指针或值嵌入 Go》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>