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") }