【发布时间】:2017-12-08 21:38:12
【问题描述】:
我在一些代码中发现了这一点:
h := s.Hash(tx)
sig, err := crypto.Sign(h[:], prv)
[:] 是什么意思?
如果这是数组的完整切片,为什么不传递数组本身呢?这是什么编码风格,不知道……
【问题讨论】:
-
它确实需要一个完整数组的切片 (as covered in the Go tour),并且您会将它而不是完整数组传递给一个接受切片而不是数组的函数。它们不可互换。
-
[:] 的原因之一是它允许您通过创建对数组数据的引用(切片)来从数组转换为切片,而无需额外复制。如果您只是将一个数组传递给函数(方法),您将创建一个新的数据副本。
标签: go