我又来了,代码如下:
s1和s2 都是空切片,长度都为零,为何跟nil比较结果不一样呢?
```
package main
import "fmt"
func main() {
var s1 = []string{}
var s2 []string
fmt.Println(s1 == nil, s1, len(s1)) // 输出 false [] 0
fmt.Println(s2 == nil, s2, len(s2)) // 输出 true [] 0
}
```
你好,我还是不太理解。
就像下面这个例子,操作函数没有返回值,直接对切片进行操作,这个不是引用类型?
```
package main
import "fmt"
func mytest(x []int) {
x[0] = 100
}
func main() {
var demo []int = []int{1, 2, 3}
fmt.Println(demo)
mytest(demo)
fmt.Println(demo)
}
```
#5
更多评论
明白了,s1相当于已经做一次初始化,已经分配内存了,就不等于nil
![ss.png](https://static.studygolang.com/220113/8c3b175899f50612f103041c2c9c94cf.png)
#1