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