
Map 是一种无序的键值对的集合。Map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值。
在别的语言中我们经常会使用到 Map,就比如说 JavaScript(JSON 也一直)我们就经常使用 {} 定义一个集合关系:
const map = {
    age: -1,
    name: "Unknown",
    region: "Guangzhou, Guangdong Province, China",
    postcode: 510000
}
复制代码因为 Map 是一种集合,所以我们可以像迭代数组和切片那样迭代它。
不过需要注意的是,Map 是无序的,我们无法决定它的返回顺序,只因 Map 是使用 hash 表来实现的。
定义 Map
我们可以使用内建函数 make 来定义 Map。当然,我们也可以使用 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 不能用来存放键值对。
package main
import "fmt"
func main() {
var provinceCapitalMap map[string]string /* 创建一个集合 */
provinceCapitalMap = make(map[string]string)
    /* 向 map 中插入键值对(key - value),让各个省份对应他们的省会 */
    provinceCapitalMap [ "Guangdong" ] = "Guangzhou"
    provinceCapitalMap [ "Fujian" ] = "Xiamen"
    provinceCapitalMap [ "Beijing" ] = "Beijing"
    provinceCapitalMap [ "Sichuan " ] = "Chengdu"
    /* 使用键输出该键在 map 中的对应值 */
    for province := range provinceCapitalMap {
        fmt.Println(province, "'s captial city is ", countryCapitalMap [country])
    }
    /*查看元素在集合中是否存在 */
    capital, ok := provinceCapitalMap [ "Shaanxi" ] /* 如果确定 ok 为真则表示记录存在,否则表示没有定义该记录 */
    if (ok) {
        fmt.Println("Shaanxi's capital city is ", capital)
    } else {
        fmt.Println("Shaanxi's capital city is not defined.")
    }
}
复制代码© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
    























![[桜井宁宁]COS和泉纱雾超可爱写真福利集-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/4d3cf227a85d7e79f5d6b4efb6bde3e8.jpg)

![[桜井宁宁] 爆乳奶牛少女cos写真-一一网](https://www.proyy.com/skycj/data/images/2020-12-13/d40483e126fcf567894e89c65eaca655.jpg)
