https://ask.csdn.net/questions/1057589#answer_form
1、关于切片
切片拥有长度和容量。
切片的长度是它所包含的元素个数。
切片的容量是从它的第一个元素开始数,到其底层数组元素末尾的个数。
切片 s 的长度和容量可通过表达式 len(s) 和 cap(s) 来获取。
来自
package main
import (
"fmt"
)
func main() {
var baseArr = []int{1,2,3,4,5}
var part1 = baseArr[:1] // (1)
fmt.Print(len(part1),cap(part1))
fmt.Print(part1,"\n")
var part2 = baseArr[1:3]
fmt.Print(part2,"\n")
fmt.Print(len(part2),cap(part2))
var result [][]int
for i := 0; i < len(part2); i++ {
tempArr := append(part1, part2[i]) // (2)
result = append(result, tempArr) // (3)
}
fmt.Println(result)
}
https://www.cnblogs.com/AndrewGhost/p/12183318.html
2、关于append,
对切片append元素有两种情况考量,
如 append(slice, 1)
1)如果slice的容量还有剩余,元素1直接追加到slice指向的底层数组。
2) 如果slice没有剩余容量,append函数会创建一个新的切片,新切片容量为slice的两倍,并将slice中的数据拷贝到新切片,然后追加新元素。
来自
有容量还是在append原来的切片修改