为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
蛊毒传说 2022-09-05 15:50:24
我觉得奇怪的是,运行返回而不是.它真的应该以这种方式工作吗?big.NewInt(0).Bytes()[][0]https://play.golang.org/p/EEaS8sCvhFb
查看完整描述

2 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

大。Int 是一个结构。尽可能使零值有用是习语。 也不例外:的零值表示 值 。big.IntInt0

这是一个实现详细信息,但 的数据存储在切片中。切片的零值为 ,即:无元素。Intnil

所以这非常方便,而且非常高效。 可能是最常见的值,并且可能存在首字母不会更改的情况,因此不会为内部表示分配任何切片。0big.Int


查看完整回答
反对 回复 2022-09-05
?
长风秋雁

TA贡献1757条经验 获得超7个赞

文档中

字节返回 x 的绝对值作为大端字节片。

包 API 不定义切片的长度。在本例中,它使用传达整数所需的最小字节数。

发生这种情况的更可能原因是实现细节:在切片中维护数字的字节。 Go 中的切片(切片的零值)的长度为 0。最初创建值时,我们希望它也具有 值 。因此,如果空切片在内部对应于数值 ,则无需执行额外的检查或填充,则可简化实现。big.Intnilbig.Int00


查看完整回答
反对 回复 2022-09-05
  • 2 回答
  • 0 关注
  • 71 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信