Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。不过,Map 是无序的,我们无法决定它的返回顺序,这是因为 Map 是使用 hash 表来实现的。
可以使用内建函数 make 也可以使用 map 关键字来定义 Map:
- /* 声明变量,默认 map 是 nil */
- var map_variable map[key_data_type]value_data_type
- /* 使用 make 函数 */
- map_variable = make(map[key_data_type]value_data_type)
如果不初始化 map,那么就会创建一个 nil map。nil map 不能用来存放键值对
下面实例演示了创建和使用map:
- package main
- import "fmt"
- func main() {
- var countryCapitalMap map[string]string
- /* 创建集合 */
- countryCapitalMap = make(map[string]string)
- /* map 插入 key-value 对,各个国家对应的首都 */
- countryCapitalMap["France"] = "Paris"
- countryCapitalMap["Italy"] = "Rome"
- countryCapitalMap["Japan"] = "Tokyo"
- countryCapitalMap["India"] = "New Delhi"
- /* 使用 key 输出 map 值 */
- for country := range countryCapitalMap {
- fmt.Println("Capital of",country,"is",countryCapitalMap[country])
- }
- /* 查看元素在集合中是否存在 */
- captial, ok := countryCapitalMap["United States"]
- /* 如果 ok 是 true, 则存在,否则不存在 */
- if(ok){
- fmt.Println("Capital of United States is", captial)
- }else {
- fmt.Println("Capital of United States is not present")
- }
- }
以上实例运行结果为:
- Capital of France is Paris
- Capital of Italy is Rome
- Capital of Japan is Tokyo
- Capital of India is New Delhi
- Capital of United States is not present
delete() 函数用于删除集合的元素, 参数为 map 和其对应的 key。实例如下:
- package main
- import "fmt"
- func main() {
- /* 创建 map */
- countryCapitalMap := map[string] string {"France":"Paris","Italy":"Rome","Japan":"Tokyo","India":"New Delhi"}
- fmt.Println("原始 map")
- /* 打印 map */
- for country := range countryCapitalMap {
- fmt.Println("Capital of",country,"is",countryCapitalMap[country])
- }
- /* 删除元素 */
- delete(countryCapitalMap,"France");
- fmt.Println("Entry for France is deleted")
- fmt.Println("删除元素后 map")
- /* 打印 map */
- for country := range countryCapitalMap {
- fmt.Println("Capital of",country,"is",countryCapitalMap[country])
- }
- }
以上实例运行结果为:
- 原始 map
- Capital of France is Paris
- Capital of Italy is Rome
- Capital of Japan is Tokyo
- Capital of India is New Delhi
- Entry for France is deleted
- 删除元素后 map
- Capital of Italy is Rome
- Capital of Japan is Tokyo
- Capital of India is New Delhi