切片这个概念我是从python语言中学到的,当时感受这个东西真的比较好用。不像java语言写起来就比较繁琐。不过我以为将来java语法也会支持的。java
切片能够使用make函数来定义,也能够像变量声明同样建立个未指定大小的切片。python
var x []int = make([]int, 3); y := make([]int, 3); z := []int {1, 2, 3};
make有三个参数,第一个是类型(数组类型,因此带方括号),第二个是长度len,第三个是容量cap。长度好理解,就是值的多少。而容量就很差理解了,容量是为了自动扩容次数减小而设计的,为了减小扩容的次数,你能够上来就设置大些。数组
s := arr[:] s := arr[1:2] s := arr[1:] s := arr[:2]
这个两个函数为了获得切片的len和cap的。app
一个切片在未初始化以前默认为 nil,长度为 0。函数
append是往原有切片中增长元素。而copy是复制原有切片,若是不复制,那么修改新的切片内容,原有对应的元素也会被修改。学习
var x []int x = append(x, 1); x = append(x, 2, 3, 4); y := make([]int, len(x), cap(x) * 2) copy(y, x);