package main
import "fmt"
func main() {
var a = make([]int, 2, 2)
fmt.Printf("len=%d,cap=%d\n", len(a), cap(a))
a[0] = 0
a[1] = 1
changeData(a, 2)
changeData(a, 8)
fmt.Println("a=", a)
}
func changeData(data []int, num int) {
for i := 0; i < num; i++ {
value := i + 77
if i < 2 {
data[i] = value
} else {
data = append(data, value)
}
}
fmt.Printf("changeData,len=%d,cap=%d,data=%v\n", len(data), cap(data), data)
}
切片是一个结构体,包含长度,容量,数据地址
changeData参数是值传递
第一次changedata时和a的数据相同,因为没有进行扩容,数据地址是一样的。第二个changeData进行了扩容,所以和第一个不一样,因为数据保存到了新的地址