为什么大。新Int(0).Bytes() 在 Go 中返回 [] 而不是 [0]?

我觉得奇怪的是,运行返回而不是.它真的应该以这种方式工作吗?big.NewInt(0).Bytes()[][0]

https://play.golang.org/p/EEaS8sCvhFb


蛊毒传说
浏览 74回答 2
2回答

叮当猫咪

大。Int 是一个结构。尽可能使零值有用是习语。 也不例外:的零值表示 值 。big.IntInt0这是一个实现详细信息,但 的数据存储在切片中。切片的零值为 ,即:无元素。Intnil所以这非常方便,而且非常高效。 可能是最常见的值,并且可能存在首字母不会更改的情况,因此不会为内部表示分配任何切片。0big.Int

长风秋雁

从文档中:字节返回 x 的绝对值作为大端字节片。包 API 不定义切片的长度。在本例中,它使用传达整数所需的最小字节数。发生这种情况的更可能原因是实现细节:在切片中维护数字的字节。 Go 中的切片(切片的零值)的长度为 0。最初创建值时,我们希望它也具有 值 。因此,如果空切片在内部对应于数值 ,则无需执行额外的检查或填充,则可简化实现。big.Intnilbig.Int00
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go