1、定义
map是一种无序的基于"key-value"(键值对)的数据结构,go语言中的map是引用类型,必须初始化才能引用。简单可以理解为一种映射关系
2、代码块
package main
import "fmt"
func main() {
a := make(map[string]int, 10)
fmt.Println(a)
fmt.Printf("%T\n", a)
a["嘟嘟"] = 3
a["一一"] = 2
fmt.Println(a)
fmt.Println("8号") //map中没有“8号”,保存不会报错,会拿到这个key对应累心的零值
//约定俗成用ok接收返回的布尔值
value, ok := a["一一"]
if !ok {
fmt.Println("无此人")
} else {
fmt.Println(value)
}
}
3、遍历map
package main
import "fmt"
func main() {
a := make(map[string]int, 10)
a["嘟嘟"] = 3
a["一一"] = 2
//map的遍历
for k, v := range a {
fmt.Println(k, v)
}
//只遍历key
for k := range a {
fmt.Println(k)
}
//只遍历value
for _, v := range a {
fmt.Println(v)
}
}
4、删除map中的元素
package main
import "fmt"
func main() {
a := make(map[string]int, 10)
a["嘟嘟"] = 3
a["一一"] = 2
// 删除
delete(a, "一一")
fmt.Println(a)
}
5、map和切片组合
package main
import "fmt"
func main() {
//map和slice组合
//元素类型为map的切片
a := make([]map[int]string, 5, 10)
fmt.Printf("%T\n", a)
a[0] = make(map[int]string, 10)
a[0][10] = "沙河"
fmt.Println(a)
//值为切片类型的map
b := make(map[string][]int, 5)
b["北京"] = []int{1, 2, 5}
fmt.Println(b)
}