4.3.2.映射查找
对于映射的查找操作,Go语言提供了两种相似的语法,都是使用的[]索引操作符。下面是使用这两种语法的几个例子。
1 2 3 4 5 6 7 | population := populationForCity["Mumbai"] fmt.Println("Mumbai's population is", population) population = populationForCity["Emerald City"] fmt.Println("Emerald City's population is", population) Mumbai's population is 12690000 Emerald City's population is 0 |
如果我们查找的键存在,则返回对应的值,如果该键不存在,就返回映射的值的类型的零值。但是,在上面的例子中,我们并不能明确,键EmeraldCity返回的0值是因为Emerald City的值确实是0值,还是在映射中根本就不存在该键。Go语言的第二种查找语法提供了这个问题的解决方法。
1 2 3 4 5 6 7 8 9 10 11 12 | city := "Istanbul" if population, found := populationForCity[city]; found { fmt.Printf("%s's population is %d\n", city, population) } else { fmt.Printf("%s's population data is unavailable\n", city) } city = "Emerald City" _, present := populationForCity[city] fmt.Printf("%q is in the map == %t\n", city, present) Istanbul's population is 12610000 "Emerald City" is in the map == false |
如果我们使用[]索引操作符时返回两个变量,第一个是键对应的值(或当键不存在时,返回映射的值的类型的零值),第二个是true(或当键不存在时,返回false)。这样我们就能够检查相应的键是否存在。在上面的例子中,如果我们只是想要检查对应的键是否存在,我们可以使用空白标识符来代替返回值。