map, slice, chan创建
map引用类型
MyMap := make(map[int]string, 20)//20可要可不要,没什么用
MyMap[0] = "zs"
MyMap[1] = "ls"
fmt.Println(MyMap)//map[0:zs 1:ls]
YouMap := MyMap
YouMap[1] = "gg"
fmt.Println(YouMap)//map[0:zs 1:gg]
fmt.Println(MyMap)//map[0:zs 1:gg]
fmt.Println(len(YouMap)) //2
//fmt.Println(cap(YouMap)) //没有容量概念
new创建map
myMap := new(map[int]string)
fmt.Println(myMap)//&map[]
初始化map
myMap := map[int]string{}
myMap[0] = "zs"
myMap[1] = "ls"
fmt.Println(myMap)
---------------------------------
myMap := map[int]string{
0: "zs",
1: "ls",
}
fmt.Println(myMap)
初始化slice
MySlice := []int{1, 2, 3}
fmt.Println(MySlice)//[1,2,3]
fmt.Println(len(MySlice))//3
fmt.Println(cap(MySlice))//3
MySlice = append(MySlice, 4)
fmt.Println(MySlice)//[1,2,3,4]
fmt.Println(len(MySlice))//4
fmt.Println(cap(MySlice))//6 每次增大为原来的两倍
slice引用类型
MySlice := make([]int, 3, 5)//若只有一个值,容量与长度相等
MySlice = append(MySlice, []int{1, 2, 3}...)
fmt.Println(MySlice)//[0 0 0 1 2 3]
YouSlice := MSClice
YouSlice[0] = 10
fmt.Println(MySlice)//[10 0 0 1 2 3]
fmt.Println(YouSlice)//[10 0 0 1 2 3]
初始化chan
//MyChan := make(chan int) 不能不设置容量
//MyChan := make(chan int,3,5)也不能设置两个值
MyChan := make(chan int, 3)
MyChan <- 10
MyChan <- 20
MyChan <- 30
fmt.Println(<-MyChan)//10
fmt.Println(<-MyChan)//20
fmt.Println(<-MyChan)//30