func test2() { fmt.Printf("-------map的插入和更新-------\n") var m map[string]string = map[string]string{"s1": "hello world"} fmt.Printf("m:%v\n", m) m["s1"] = "hi" fmt.Printf("update m:%v\n", m) // 查找 if _, ok := m["s1"]; ok { fmt.Printf("m[s1]:%v\n", m["s1"]) } // 遍历map for k, v := range m { fmt.Printf("%s:%s\n", k, v) } // 删除map内的元素 delete(m, "s1") fmt.Printf("len:%d\n", len(m)) }
func modify(m map[string]map[string]string) { fmt.Printf("%p\n", m) // 判断m的key对应的map是否初始化 if _, ok := m["s1"]; !ok { fmt.Println(ok) m["s1"] = make(map[string]string, 5) } m["s1"]["y1"] = "s1-y1-1" fmt.Printf("modify:m[s1][y1]:%v\n", m["s1"]["y1"]) }
func trans(m map[string]map[string]string) { // 遍历map嵌套 for k, v := range m { fmt.Printf("k:%s\n", k) for k1, v1 := range v { fmt.Printf("%s:[%s:%v]\n", k, k1, v1) } } }
func test3() { fmt.Printf("-------map嵌套的初始化-------\n") // map是引用类型 在传递时传递的时地址的副本 m := make(map[string]map[string]string, 5) fmt.Printf("%p\n", m) modify(m) // 这里也能读取到modify对m的初始化和赋值 fmt.Printf("test3:m[s1][y1]:%v\n", m["s1"]["y1"])