Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Go (nil)在这个上下文[]字符串(nil)中到底在做什么_Go - Fatal编程技术网

Go (nil)在这个上下文[]字符串(nil)中到底在做什么

Go (nil)在这个上下文[]字符串(nil)中到底在做什么,go,Go,我在看切片技巧: 我注意到在他们的复制示例中有[]T(nil) 我以前没有见过这样的(nil),我也找不到任何关于使用它的文档,也找不到它到底能实现什么(我知道它是不言自明的,但我想知道它与make或[]string{} 通过谷歌搜索“golang(nil)slice”,我能找到的唯一参考是 由于切片的零值(nil)的作用类似于零长度切片,因此可以声明一个切片变量,然后在循环中附加到该变量: 但它并没有说它可以在哪里使用,或者它到底完成了什么,比如我可以在结构中使用它或者我想要的任何东西吗 e、

我在看切片技巧:

我注意到在他们的复制示例中有
[]T(nil)

我以前没有见过这样的
(nil)
,我也找不到任何关于使用它的文档,也找不到它到底能实现什么(我知道它是不言自明的,但我想知道它与
make
[]string{}

通过谷歌搜索“golang(nil)slice”,我能找到的唯一参考是

由于切片的零值(nil)的作用类似于零长度切片,因此可以声明一个切片变量,然后在循环中附加到该变量:

但它并没有说它可以在哪里使用,或者它到底完成了什么,比如我可以在结构中使用它或者我想要的任何东西吗

e、 g:

包干管

导入“日志”

我只对
(nil)
是如何运行的,以及它可以在什么上运行感到好奇

喜欢

[]string(nil)
操作与

[]string{}
或者这里有什么区别

list := []string(nil) // list is an empty slice of strings 
func追加(切片[]类型,元素…类型)[]类型

函数获取一个字符串片段和一个长度可变的字符串列表,并返回一个片段,其中字符串列表将附加到该片段的末尾

因此:

将创建一个空字符串片段,并将字符串附加到“str”中并返回结果


这是一个结果片的副本,因为它具有相同顺序的所有相同值。

这是一个类型转换,将
nil
转换为一个片

这些是等价的

var t []string
t := []string(nil)

在这两种情况下,
t
都属于
[]string
,并且
t==nil

谢谢你的回复,我知道append是如何工作的,我严格地说的是
[]string(nil)
它本身,我很好奇
(nil)是如何工作的
操作以及它可以操作什么,append只是一个例子,我想知道使用
[]string{}
[]string(nil)
是否有任何好处,那么这与使用
接口类型(string)
?它的操作是否与
[]string{}
相同?否。
(type)
是“类型断言”。
[]string{}
语法分配一个片,而不是
nil
。那么在append示例中使用
[]string(nil)
而不是
[]string{}
的好处是什么?后者需要分配。Ohhhhh我现在从不同的角度来看,它与
uint64(2)相同
由于某种原因,我就是看不到它,因为它被一个
nil
环绕,并且是
[]字符串()
。谢谢
cop := append([]string(nil), str...) 
var t []string
t := []string(nil)