持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第31天,点击查看活动详情
一、Map 的增删改查操作:
一、Map 增加和更新:
// 如果还没有 key ,就是增加,如果有 key 存在那就是修改。
map ["key"] = value
package main
import "fmt"
func main() {
cities := make(map[string]string)
cities["no1"] = "北京"
cities["no2"] = "天津"
cities["no3"] = "上海"
fmt.Println(cities)
// 因为这个 no3 这个key已经存在,因此下面这句话就是修改
cities["no3"] = "上海~"
fmt.Println(cities)
}
二、Map 删除
说明:
delete(map ,“key”),delete 是一个内置函数,如果 key 存在,就删除该 key - value ,如果 key 不存在,但是也不会报错。
func delete
func delete(m map[Type]Type1, key Type)
内建函数delete按照指定的键将元素从映射中删除。若m为nil或无此元素,delete不进行操作。
package main
import "fmt"
func main() {
cities := make(map[string]string)
cities["no1"] = "北京"
cities["no2"] = "天津"
cities["no3"] = "上海"
fmt.Println(cities)
// 因为这个 no3 这个key已经存在,因此下面这句话就是修改
cities["no3"] = "上海~"
fmt.Println(cities)
// 演示删除
delete(cities, "no1")
fmt.Println(cities)
// 当 delete 指定的 key 不存在时,删除不会操作,也不会报错
delete(cities, "no4")
fmt.Println(cities)
// 如果希望一次性删除所有的key
// 1. 遍历所以的 key ,如何逐一删除【遍历】
// 2. 直接 make 一个新的空间即可
cities = make(map[string]string)
fmt.Println(cities)
}
细节说明:
- 如果我们要删除 map 的所有 key ,没有一个专门的方法一次删除,可以遍历一下 key ,逐个删除,或者 map = make (......),make 一个新的,让原来的成为垃圾,被 gc 回收。
三、Map 查找:
案例演示:
package main
import "fmt"
func main() {
cities := make(map[string]string)
cities["no1"] = "北京"
cities["no2"] = "天津"
cities["no3"] = "上海"
fmt.Println(cities)
// 因为这个 no3 这个key已经存在,因此下面这句话就是修改
cities["no3"] = "上海~"
fmt.Println(cities)
// 演示删除
delete(cities, "no1")
fmt.Println(cities)
// 当 delete 指定的 key 不存在时,删除不会操作,也不会报错
delete(cities, "no4")
fmt.Println(cities)
// 演示 map 的查找
val, ok := cities["no2"]
if ok {
fmt.Printf("有 no1 key 值为%v\n", val)
} else {
fmt.Printf("没有 no1 key\n")
}
}
对上面代码的说明:
说明,如果heroes 这个 map 中存在“no1”,那么findRes就会返回 true ,否则返回 false