gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 00:33:35 26 4
gpt4 key购买 nike

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

type FrontierSigner struct{}

它有什么用?

最佳答案

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

  1. 它是 Go 中最小的构建 block 。它的大小实际上是 0 字节。

  2. 如果它的大小为零。你可以创建一个包含 1000 个空结构的 slice ,这个 slice 会非常小。因为真正的 Go 在 slice 中只存储了它们中的一部分,而不是它们本身。 channel 也是如此。

  3. 所有指向它的指针总是指向内存中相同的特殊位置。

  4. 当您通知某个事件但不需要传递有关它的任何信息时,它在 channel 中非常有用,只需传递一个事实。最好的解决方案是传递一个空结构,因为它只会增加 channel 中的计数器,而不会分配内存、复制元素等。有时人们为此目的使用 bool 值,但情况更糟。

  5. 方法的零大小容器。您可能想要一个用于测试接口(interface)的模拟。通常您不需要上面的数据,只需要具有预定义输入和输出的方法。

  6. Go 没有Set 对象。 Bit 可以很容易地实现为 map[keyType]struct{}。这样 map 只保留键而不保留值。

关于go - 在 Go 中使用空结构的类型有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47544156/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com