golang中使用make初始化slice切片时的len切片长度和cap切片容量的区别和注意事项
·
golang中我们在初始化一个切片时需要使用make内置函数来对切片进行初始化和分配内存空间的工作。
make参数len和cap的区别
make函数中的第二个参数 len 表示数据长度, 而 第3个参数cap表示slice的容量,即这个slice最多可存放的数据量。
如: make([]int, 0, 10) 这里的 0 就是切片长度len,0 表示暂无数据, 10 表示的是切片的容量 cap , 表示这个切片最多只能放多少个数据。
越界异常实例:

Slice注意事项:
1. 虽然go中的slice切片可以动态扩容,但是由于他底层仍然是数组,所以slice在定义后还是不能越界使用了;
2. slice借助 append 函数自动扩容后变成动态数组。
3. go语言的slice切片在每次使用append函数在底层都会自动生成一个新的数组(大小由编译器底层根据当前的数据量来控制)并将其引用返回, slice是引用类型。
4. 如果可能,则应该尽可能的减少append的使用次数;
5. 如果定义的切片是用于从Reader中读取数据,则在定义时len必须为0(如果不为0,则在你读取的数据中就会有N个无意义零值存在), cap为你想要读取的数据的长度, 如果你在初始化时len和cap设置了一样的值,则你是无法从Reader中读取数据的。
6. 默认情况下make初始化时的cap如果不指定,则和len是一样的。

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)