容器类型包括数组、切片和map。
1 数组
数组大小是固定的。
首先定义数组,代码如下:
peopleArray := [...] string{"令狐冲", "任盈盈", "东方不败"}
通过长度遍历数组:
fmt.Println("通过直接访问数组遍历:")
var i int
for i = 0; i < 3; i++ {
fmt.Println(i, peopleArray[i])
}
输出:
通过range遍历数组:
fmt.Println("通过range关键字遍历:")
i = 0
for j, str := range peopleArray {
fmt.Println(j, str)
}
fmt.Println("通过range只输出元素:")
for _, str := range peopleArray {
fmt.Println(str)
}
输出:
2 切片slice
切片slice可以认为是动态数组
首先定义slice,代码如下:
pepoleSlice := [] string {"令狐冲"}
也可以make创建slice,代码如下:
var pepoleSlice = make([]string,1,1)
输出slice的长度和容量,代码如下:
var len int = len(pepoleSlice)
fmt.Println("切片slice的长度:", len)
var capacity int = cap(pepoleSlice)
fmt.Println("切片slice的容量:", capacity)
输出:
Slice中增加元素,代码如下:
pepoleSlice = append(pepoleSlice, "任盈盈")
fmt.Print("切片slice增加1个元素:")
fmt.Println(pepoleSlice)
输出:
Slice中增加多个元素,代码如下:
pepoleSlice = append(pepoleSlice, "岳不群", "风清扬")
fmt.Print("切片slice增加多个元素:")
fmt.Println(pepoleSlice)
输出:
拷贝slice,代码如下:
pepoleSlice2 := make([]string, len, capacity)
copy(pepoleSlice2, pepoleSlice)
fmt.Print("切片slice拷贝后新的切片:")
fmt.Println(pepoleSlice2)
输出:
截取slice创建新的slice,代码如下:
pepoleSlice3:= pepoleSlice[0:1]
fmt.Print("切片slice截取后新的切片:")
fmt.Println(pepoleSlice3)
输出:
3 map
首先定义和初始化一个map,代码如下:
// 定义map
peopleMap := make(map[string]string)
// map 增加数据
peopleMap["1"] = "令狐冲"
peopleMap["2"] = "任盈盈"
peopleMap["3"] = "东方不败"
输出map,代码如下:
fmt.Println("输出map:")
for id, people := range peopleMap {
fmt.Println(id, people)
}
输出:
判断元素是否存在,代码如下:
fmt.Println("判断map中元素是否存在:")
_, ok := peopleMap ["令狐冲"]
if (ok) {
fmt.Println("人物存在")
} else {
fmt.Println("人物不存在")
}
输出:
删除元素,代码如下:
delete(peopleMap, "1")
// 输出map
fmt.Println("删除map中元素后:")
for id := range peopleMap {
fmt.Println(id, peopleMap[id])
}
输出:
详见代码:
https://gitee.com/linghufeixia/go-simple
chapter2