问题内容
我正在查看 sha1 相关代码 https://cs.opensource.google/go/go/+/refs/tags/go1.21.5:src/crypto/sha1/sha1.go;l=146-152
尤其是这一行 append(in, hash[:]…)
我不确定为什么使用 hash[:]…,而 hash… 似乎就足够了。
这是一段测试代码 https://go.dev/play/p/DaIa0X4KyeD
func main() { s := make([]int, 2, 10) s[0] = 1 s[1] = 2 d := []int{88} d = append(d, s[:]...) // d = append(d, s...) seems to work the same fmt.Printf("d is: (%v)", d) fmt.Printf("d len is: (%v)", len(d)) fmt.Printf("d cap is: (%v)", cap(d))}
登录后复制
所以我的问题是 [:] 对于切片来说有什么意义?谢谢!
正确答案
hash 是一个数组(类型为 [Size]byte),而不是切片。 hash[:] 是一个切片 — 相当于 hash[0:len(hash)]。 … 表示法需要一个切片,因此它应用于切片 hash[:] 而不是数组 hash。
以上就是Go 切片的用法的详细内容,更多请关注【创想鸟】其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。
发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2360838.html