我在看切片技巧:https : //github.com/golang/go/wiki/SliceTricks我在他们的复制示例中注意到他们有 []T(nil)我以前从未见过(nil)这样的东西,我找不到任何关于使用它的文档或它究竟完成了什么(我知道它是不言自明的,但我想知道它如何与make或[]string{}我可以通过谷歌搜索“golang (nil) slice”找到的唯一参考是由于切片 (nil) 的零值就像一个零长度切片,您可以声明一个切片变量,然后在循环中附加到它:但它没有说明它可以在哪里使用或它完成了什么,比如我可以将它与结构或任何我想要的一起使用吗?例如:包主导入“日志”func main() { str := []string{"Hello", "Bye", "Good Day", "????????"} cop := append([]string(nil), str...) log.Println(str) log.Println(cop)}我只是对如何(nil)运作以及它可以运作的内容感到好奇。喜欢[]string(nil)操作一样[]string{}或者这里有什么区别
2 回答
青春有我
TA贡献1784条经验 获得超8个赞
这是一种类型转换,将 a 转换nil为切片。
这些是等价的
var t []string
t := []string(nil)
在这两种情况下,t都是类型[]string,并且t == nil
慕少森
TA贡献2019条经验 获得超9个赞
list := []string(nil) // list is an empty slice of strings
func append(slice []Type, elems ...Type) []Type
函数接受一个字符串切片和一个可变长度的字符串列表,并返回一个将字符串列表附加到末尾的切片。
所以:
cop := append([]string(nil), str...)
将创建一个空的字符串切片并将字符串附加到“str”中并返回结果。
结果切片是一个副本,因为它以相同的顺序具有所有相同的值。
- 2 回答
- 0 关注
- 219 浏览
添加回答
举报
0/150
提交
取消