空切片问题

sharkLoc · · 1174 次点击
首先,go的函数传参,返回都是拷贝。你可以把它理解成一个浅拷贝,而slice底层确实是结构体,函数修改的虽然是拷贝的数据,但是由于是浅拷贝,原来的slice和函数里的slice虽然不一样,但是共用同一个数组,只是通过下标修改值当然不会影响到底层的数组了啊!append扩容了之后,函数里面的slice绑定了一个新数组,当然不会影响到元slice了。![1.PNG](https://static.studygolang.com/220121/d33634b6c8ab52118d6a1769f70d6e84.PNG)![2.PNG](https://static.studygolang.com/220121/17d38940bd329784944abe3b2873603d.PNG)
#17
更多评论
明白了,s1相当于已经做一次初始化,已经分配内存了,就不等于nil ![ss.png](https://static.studygolang.com/220113/8c3b175899f50612f103041c2c9c94cf.png)
#1
这种用法是不对的,不应该对slice进行nil判断,应该进行len()取长度
#2