四种方式:1.声明、2.直接初始化、3.基于数组创建、4.使用make创建
var s1 []int
fmt.Printf("类型:%T, 长度:%d, 容量:%d, 值:%#v, 地址:%p \n", s1, len(s1), cap(s1), s1, &s1)
var s2 []int = []int{}
fmt.Printf("类型:%T, 长度:%d, 容量:%d, 值:%#v, 地址:%p \n", s2, len(s2), cap(s2), s2, &s2)
s3 := []int{}
fmt.Printf("类型:%T, 长度:%d, 容量:%d, 值:%#v, 地址:%p \n", s3, len(s3), cap(s3), s3, &s3)
arr := [5]int{1, 2}
s4 := arr[0:4:4]
s5 := append(s4, 6)
fmt.Printf("类型:%T, 长度:%d, 容量:%d, 值:%#v, 地址:%p \n", arr, len(arr), cap(arr), arr, &arr[0])
fmt.Printf("类型:%T, 长度:%d, 容量:%d, 值:%#v, 地址:%p \n", s4, len(s4), cap(s4), s4, &s4[0])
fmt.Printf("类型:%T, 长度:%d, 容量:%d, 值:%#v, 地址:%p \n", s5, len(s5), cap(s5), s5, &s5[0])
s6 := make([]int, 10)
s7 := make([]int, 10, 20)
fmt.Printf("类型:%T, 长度:%d, 容量:%d, 值:%#v, 地址:%p \n", s6, len(s6), cap(s6), s6, &s6[0])
fmt.Printf("类型:%T, 长度:%d, 容量:%d, 值:%#v, 地址:%p \n", s7, len(s7), cap(s7), s7, &s7[0])
xc000012190
xc00001e0a0