4.3.3.修改映射
元素,也就是“键-值”对,可以被插入到映射中,也可以从映射中删除掉,且任何键对应的值都可以被修改。请看下面的例子。
1 2 3 4 5 6 7 8 9 10 11 12 | fmt.Println(len(populationForCity), populationForCity) delete(populationForCity, "Shanghai") // Delete fmt.Println(len(populationForCity), populationForCity) populationForCity["Karachi"] = 11620000 // Update fmt.Println(len(populationForCity), populationForCity) populationForCity["Beijing"] = 11290000 // Insert fmt.Println(len(populationForCity), populationForCity) 4 map[Shanghai:13680000 Mumbai:12690000 Istanbul:12610000 Karachi:10620000] 3 map[Mumbai:12690000 Istanbul:12610000 Karachi:10620000] 3 map[Mumbai:12690000 Istanbul:12610000 Karachi:11620000] 4 map[Mumbai:12690000 Istanbul:12610000 Karachi:11620000 Beijing:11290000] |
映射的插入和更新语法是一样:如果给定的键不存在,则将给定的键和值插入到该映射中;而如果存在,则将对应的值更新为给定的值并丢弃原有的值。如果我们尝试删除一个不存在的元素,Go将安全的什么也不做。
上面的方法并不能更新映射的键,但是可以使用下面的方法做到这一点:
1 2 3 4 5 6 7 | oldKey, newKey := "Beijing", "Tokyo" value := populationForCity[oldKey] delete(populationForCity, oldKey) populationForCity[newKey] = value fmt.Println(len(populationForCity), populationForCity) 4 map[Mumbai:12690000 Istanbul:12610000 Karachi:11620000 Tokyo:11290000] |
我们检索出原有的键的值,删除该键对应的元素,使用新的键创建一个元素,最后将原来的键的值赋值给该键。