Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。
定义 Map
可以使用内建函数 make 也可以使用 map 关键字来定义 Map:
1 2 3 4 5
| var map_variable map[key_data_type]value_data_type
map_variable := make(map[key_data_type]value_data_type)
|
下面实例演示了创建和使用 map:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| package main
import "fmt"
func main() { var countryCapitalMap map[string]string countryCapitalMap = make(map[string]string)
countryCapitalMap [ "France" ] = "巴黎" countryCapitalMap [ "Italy" ] = "罗马" countryCapitalMap [ "Japan" ] = "东京" countryCapitalMap [ "India " ] = "新德里"
for country := range countryCapitalMap { fmt.Println(country, "首都是", countryCapitalMap [country]) }
capital, ok := countryCapitalMap [ "American" ] if (ok) { fmt.Println("American 的首都是", capital) } else { fmt.Println("American 的首都不存在") } }
|
delete() 函数
delete() 函数用于删除集合的元素, 参数为 map 和其对应的 key。实例如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| package main
import "fmt"
func main() { countryCapitalMap := map[string]string{"France": "Paris", "Italy": "Rome", "Japan": "Tokyo", "India": "New delhi"}
fmt.Println("原始地图")
for country := range countryCapitalMap { fmt.Println(country, "首都是", countryCapitalMap [ country ]) }
delete(countryCapitalMap, "France") fmt.Println("法国条目被删除")
fmt.Println("删除元素后地图")
for country := range countryCapitalMap { fmt.Println(country, "首都是", countryCapitalMap [ country ]) } }
|
参考
https://www.runoob.com/go/go-map.html