package main
import "fmt"
func main() {
//切片定义的第一种方式,由数组切出来
//var a [8]int=[8]int{1,2,3,4,5,6,7,8}
////只是对数组的引用
//var b []int=a[2:6]
//fmt.Println(b)
//a[2]=30
//fmt.Println(b)
//b[1]=40
//fmt.Println(b)
//fmt.Println(a)
////底层数组的修改会影响切片
////切片的修改也会影响底层数组
//a[1]=20
//fmt.Println(b)
//更多用法,没有步长
//var a [8]int=[8]int{1,2,3,4,5,6,7,8}
//b:=a[:4]
//fmt.Println(b)
//第二种方式,直接定义
//切片空值是?nil类型
//var a []int
//if a==nil{
// fmt.Println("我是空的")
//}
//a[0]=10
//fmt.Println(a)
//定义并初始化,第一个数字是切片的长度,第二个数字是底层数组长度,也就是切片的容量
//var a []int=make([]int,3)
//fmt.Println(a)
//切片的长度和容量(len cap:容量)
//var a [8]int=[8]int{1,2,3,4,5,6,7,8}
//var b []int=a[2:6]
//fmt.Println(len(b))
//fmt.Println(cap(b))
//var a []int=make([]int,3,4)
//fmt.Println(a)
//fmt.Println(len(a))
//fmt.Println(cap(a))
//切片追加值
//var a [8]int=[8]int{1,2,3,4,5,6,7,8}
//var b []int=a[2:6]
//fmt.Println(len(b))
//fmt.Println(cap(b))
////内置函数append
//b=append(b,555)
//b=append(b,666)
//fmt.Println(b)
//fmt.Println(len(b))
//fmt.Println(cap(b))
//b[0]=999
//fmt.Println(a)
//b=append(b,777)
//fmt.Println(b)
//fmt.Println(len(b))
//fmt.Println(cap(b))
//b[0]=999
//fmt.Println(b)
//fmt.Println(a)
//var b =make([]int,3,4)
//fmt.Println(b)
//b=append(b,4)
//fmt.Println(b)
//fmt.Println(len(b))
//fmt.Println(cap(b))
//b=append(b,5)
//fmt.Println(len(b))
//fmt.Println(cap(b))
//切片的修改
//var b =make([]int,3,4)
//b[0]=999
//fmt.Println(b)
//var b =make([]int,4,4)
//fmt.Println(len(b))
//fmt.Println(cap(b))
//切片的函数传递
//var b =make([]int,3,4)
//test(b)
//fmt.Println(b)
//切片的数据结构表示
//type slice struct {
// Length int
// Capacity int
// ZerothElement *byte
//}
//多维切片
//var a [][]string=make([][]string,2,3)
//fmt.Println(a[0])
//a[0]=make([]string,2,3)
//if a[0]==nil{
// fmt.Println("xxxx")
//}
//切片初始化的方法
//var a []int=[]int{1,2,3}
//fmt.Println(a)
//fmt.Println(len(a))
//fmt.Println(cap(a))
//多维切片初始化
//var a [][]string=[][]string{{"1","2"},{"3","4"}}
//fmt.Println(a)
//fmt.Println(len(a))
//fmt.Println(cap(a))
//a[0][1]="999"
//fmt.Println(a)
//a[1][0]="999"
//var a []int=[]int{1,2}
//fmt.Println(a)
//a=append(a,3)
//fmt.Println(len(a))
//fmt.Println(cap(a))
//a[2]=99
//a[3]=888
//fmt.Println(a)
//copy函数
var a =make([]int,3,10000)
a[1]=99
a[2]=888
fmt.Println(a)
//var b =make([]int,4,4)
var b =make([]int,2,4)
fmt.Println(b)
copy(b,a)
fmt.Println(b)
}
func test(b []int) {
b[0]=999
fmt.Println(b)
}