在这种情况下 (nil) 到底在做什么 []string(nil)

我在看切片技巧: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{}

或者这里有什么区别


撒科打诨
浏览 220回答 2
2回答

青春有我

这是一种类型转换,将 a 转换nil为切片。这些是等价的var t []stringt := []string(nil)在这两种情况下,t都是类型[]string,并且t == nil

慕少森

list := []string(nil) // list is an empty slice of stringsfunc append(slice []Type, elems ...Type) []Type函数接受一个字符串切片和一个可变长度的字符串列表,并返回一个将字符串列表附加到末尾的切片。所以:cop := append([]string(nil), str...)将创建一个空的字符串切片并将字符串附加到“str”中并返回结果。结果切片是一个副本,因为它以相同的顺序具有所有相同的值。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go