package main
import "fmt"
func main() {
var z []int
if z == nil {
fmt.Println("is nil")
} else {
fmt.Println("not nil", z)
}
//按容量建立切片 並初始化數據爲0
slice1 := make([]int, 5)
printSlice("slice1", slice1)
//最大容量爲5初始化長度爲0
slice2 := make([]int, 0, 5)
printSlice("slice2", slice2)
//容量爲slice2 =5 長度爲3
slice3 := slice2[:3]
printSlice("slice3", slice3)
//append 追加數據後 超出容量5 增加至5*2=10 ,append後長度爲6
slice3 = append(slice3, 1)
slice3 = append(slice3, 3)
slice3 = append(slice3, 9)
slice3 = append(slice3, 1)
slice3 = append(slice3, 3,9,10)
printSlice("slice3", slice3)
slice4 := slice2[3:5]
printSlice("slice4", slice4)
//返回index=3-8 1 3 9 1 3 9
slice5 := slice3[3:9]
//slice3 進行切片,因容量是10 切片到index=9 返回3-9的元素 因此正確 slice3[3:11]會報錯由於容量爲10
slice6 := slice3[3:10]
printSlice("slice5", slice5)
printSlice("slice5", slice6)
}
func printSlice(a string, x []int) {
fmt.Println()
fmt.Printf("%s ,len = %d,cap = %d,val = %v", a, len(x), cap(x), x)
}