介绍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]
}


你可能感兴趣的文章