//从数组中获取 切片
var sliceArray [10]int = [10]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
//指定 begin index 和end Index
// begin index 和end index 都指定的情况 包括 begin index, 不包括end index index 从0开始
var slice2 []int = sliceArray[5:9]
// slice3 和slice2 指向同一个底层的数组
var slice3 []int = sliceArray[:]
//输出结果 [5 6 7 8] 4 5
fmt.Println(slice2, len(slice2), cap(slice2))
//测试添加元素 and 扩容之后的数组操作情况
//通过切片直接操作数组的信息
slice2[0] = 100
sliceArray[6] = 66
//多个切片 操作底层数组
slice3[7] = 77
//输出结果 [100 66 77 8] 4 5 三个赋值 都影响了切片的底层数组
fmt.Println(slice2, len(slice2), cap(slice2))
//输出结果 [0 1 2 3 4 100 66 77 8 9] 10 10
fmt.Println(slice3, len(slice3), cap(slice3))
//输出结果 [0 1 2 3 4 100 66 77 8 9] 三个赋值 都影响了 原始数组
fmt.Println("sliceArray:", sliceArray)
//扩容
// 操作的还是 sliceArray
slice2 = append(slice2, 99)
//输出结果 [100 66 77 8 99] 5 5
fmt.Println(slice2, len(slice2), cap(slice2))
// 输出结果 sliceArray: [0 1 2 3 4 100 66 77 8 99]
fmt.Println("sliceArray:", sliceArray)
slice2 = append(slice2, 1000)
//输出结果 [100 66 77 8 99 1000] 6 10 此处切片已经扩容(两倍扩容), 并保留了原始的内容
fmt.Println(slice2, len(slice2), cap(slice2))
// 输出结果 sliceArray: [0 1 2 3 4 100 66 77 8 99] 原来的数组不再受到影响了
fmt.Println("sliceArray:", sliceArray)
//通过index操作 元素 判断扩容后的底层数组是否是部分会在原始的 数组上面
slice2[1] = 999
//输出结果 [100 999 77 8 99 1000] 6 10
fmt.Println(slice2, len(slice2), cap(slice2))
// 输出结果 sliceArray: [0 1 2 3 4 100 66 77 8 99] 说明是 重新找了一块内存, 和以前的数组完全没有关系
fmt.Println("sliceArray:", sliceArray)