• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

go - 在 Go 中使用具有空结构的类型是什么?

[复制链接]
菜鸟教程小白 发表于 2022-8-16 06:38:37 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

为什么要创建一个空结构的类型?

type FrontierSigner struct{}

到底有什么好处呢?



Best Answer-推荐答案


空结构 struct{}在 Go 中以一种特殊的方式实现。

  • 它是 Go 中最小的构建 block 。它的大小实际上是 0 字节。
  • 如果它的大小为零。你可以创建一个由 1000 个空结构组成的 slice ,这个 slice 将非常小。因为真正的 Go 只在 slice 中存储了其中的一部分,而不是它们本身。与 channel 相同的故事。
  • 所有指向它的指针总是指向内存中相同的特殊位置。
  • 当你通知某个事件但你不需要传递任何关于它的信息,只需要传递一个事实时,在 channel 中非常有用。最好的解决方案是传递一个空结构,因为它只会增加 channel 中的计数器,而不会分配内存、复制元素等。
    有时人们为此目的使用 bool 值,但情况更糟。
  • 方法的零尺寸容器。您可能需要一个模拟来测试接口(interface)。通常你不需要数据,只需要具有预定义输入和输出的方法。
  • Go 没有 Set目的。位可以很容易地实现为 map[keyType]struct{} .这种方式 map 只保留键而不保留值。
  • 关于go - 在 Go 中使用具有空结构的类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47544156/

    回复

    使用道具 举报

    懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关注0

    粉丝2

    帖子830918

    发布主题
    阅读排行 更多
    广告位

    扫描微信二维码

    查看手机版网站

    随时了解更新最新资讯

    139-2527-9053

    在线客服(服务时间 9:00~18:00)

    在线QQ客服
    地址:深圳市南山区西丽大学城创智工业园
    电邮:jeky_zhao#qq.com
    移动电话:139-2527-9053

    Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap