1、
a是一个切片,a=[]int{1,2,3,4,5},若b=a[3:4],则b的cap=2,len=1。即新切片的cap为旧切片从a[3]开始后的大小
2、
切片是在函数间传递时是按值传递的,切片的结构大致是:
type slice {
len int
cap int
index *int
}
在按值传递时,通过在函数中进行append,会改变slice的len,导致传出的slice在打印时仍按照原来的slice的len改变。
eg:
func test(slc []int64) {
slc = append(slc,10)
}
func main() {
a := make([]int64,4,5)
a[0] = 1
a[1] = 2
a[2] = 3
a[3] = 4
test(a)
fmt.Println(a) **//1 2 3 4**
fmt.Println(a[0:5])**//1 2 3 4 5**
}