golang中map的crud操作

package main

import "fmt"

//map的增删改查
func main() {

	school := make(map[string]string, 10)

	school["no1"] = "清华大学"
	//如果没有key,则为增添,如果key已经存在,则为修改
	school["no1"] = "北京大学"   //修改
	school["no2"] = "清华大学"   //增添
	school["no5"] = "复旦大学"   //增添
	school["no6"] = "上海交通大学" //增添

	//map查找
	val, catch := school["no2"]
	if catch {
		fmt.Printf("有no2 key值为%v\n", val)
	} else {
		fmt.Println("没有no2")
	}
	//map删除,delete(map,"key"),delete是一个内置函数,如果key存在,就删除该key,如果key不存在,不操作,但是也不会报错

	school["no3"] = "野鸡大学" //新添
	fmt.Println(school)
	delete(school, "no3") //删除key为no3的内容
	delete(school, "no4") //delete指定的key不存在,不会执行删除操作,但是也没有报错
	fmt.Println(school)
	/*
		如果要删除map所有的key,没有一个专门的方法一次性删除
		1.但是可以遍历key逐个删除
		2.或者map = make(),make一个新的空间,让原来的成为垃圾,被gc回收
	*/
	//1.遍历所有的key
	for key, value := range school {
		fmt.Printf("key=%v value=%v\n", key, value)
	}
	//2.直接make一个新的空间
	school = make(map[string]string)
	fmt.Println(school)

	//对较为复杂的map进行for-range遍历
	id := make(map[string]map[string]string)
	id["no1"] = make(map[string]string, 3)
	id["no1"]["name"] = "派克"
	id["no1"]["sex"] = "男"
	id["no1"]["address"] = "比尔吉沃特"

	id["no2"] = make(map[string]string, 3)
	id["no2"]["name"] = "佐伊"
	id["no2"]["sex"] = "女"
	id["no2"]["address"] = "巨神峰"

	id["no3"] = make(map[string]string, 3)
	id["no3"]["name"] = "锤石"
	id["no3"]["sex"] = "男"
	id["no3"]["address"] = "暗影岛"

	for key1, value1 := range id {
		fmt.Println("key1=", key1)
		for key2, value2 := range value1 {
			fmt.Printf("\t key2=%v value2=%v\n", key2, value2)
		}
		fmt.Println()
	}

	fmt.Println("id 有", len(id), "对 key")
}

  

posted @ 2022-03-03 11:38  Star_Gazer  阅读(54)  评论(0编辑  收藏  举报