介绍go的切片,使用场景是元素个数可以改变
package main
import "fmt"
func main() {
// 创建长度为3,容量为10的数组
a := make([]int, 3, 10)
fmt.Println(a) //[0 0 0]
fmt.Println(len(a)) //长度为3
fmt.Println(cap(a)) //容量为10
// 理论上增加元素超过其容量后,地址会改变
b := make([]int, 3, 6)
fmt.Println(b) //[0 0 0]
fmt.Printf("%p\n", &b) //0xc084002620 刚开始的地址
b = append(b, 1, 2, 3)
fmt.Println(b) //[0 0 0 1 2 3]
fmt.Printf("%p\n", &b) //0xc084002620 增加3个元素后,地址还没变
b = append(b, 8, 9, 10)
fmt.Println(b) //[0 0 0 1 2 3 8 9 10]
fmt.Printf("%p\n", &b) //0xc084002620理论上地址会变的,但是这里就不变,怪事了!QAQ
c := []int{1, 2, 3, 4, 5, 6}
d := []int{7, 8, 9}
// 将数组d拷贝到c
copy(c, d)
fmt.Println(c) //[7 8 9 4 5 6]
}