我正在遍历Go-tour,这个模块让我开始思考,似乎每次您通过对下限进行切片来修改视图时,切片的容量和长度都会减少。但是,如前所述,由切片创建的基础数组不会更改。
我将示例代码简化为:
package main
import "fmt"
func main() {
s := []int{2, 3, 5, 7, 11, 13}
s = s[6:]
fmt.Println(cap(s), len(s), s)
}
打印:0 0 []这意味着此切片现在完全没有用了。
但是,数组未更改,数组仍然是(出于可视化的目的):
[2, 3, 5, 7, 11, 13]
并由引用s,这意味着它不会收集垃圾。
所以我的问题是,这是切片的副作用还是此预期/首选行为?其次,是否有办法将视图还原为原始视图?(显示[2, 3, 5, 7, 11, 13])
胡子哥哥
相关分类