【第四十一篇】Go Map的crud操作

133 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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)

}

细节说明:

  1. 如果我们要删除 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