Map的三种声明方式
代码
package mainimport ( "io" "log" "os")func main() { log.SetOutput(io.MultiWriter(os.Stdout)) log.SetFlags(log.Lshortfile) // ==> 第一种声明方式 // 声明 vMap1 是一种 map 类型, key 是 string, value 是 string 类型 var vMap1 map[string]string if vMap1 == nil { log.Println("vMap1 是一个空map") } // 这种声明方式, 在使用 vMap1 前, 需要先用 make 给, map 分配数据空间 vMap1 = make(map[string]string, 10) vMap1["A"] = "java" vMap1["B"] = "php" vMap1["C"] = "c++" log.Println(vMap1) // ==> 第二种声明方式 vMap2 := make(map[string]string) vMap2["a"] = "java" vMap2["b"] = "php" vMap2["c"] = "c++" log.Println(vMap2) // ==> 第三种方式, 声明时,直接赋值 vMap3 := map[string]string{ "1": "java", "2": "php", "3": "java", } log.Println(vMap3)}
输出
main.go:17: vMap1 是一个空mapmain.go:26: map[A:java B:php C:c++]main.go:33: map[a:java b:php c:c++]main.go:41: map[1:java 2:php 3:java]
Map 的基本使用
代码
package mainimport ( "io" "log" "os")func main() { log.SetOutput(io.MultiWriter(os.Stdout)) log.SetFlags(log.Lshortfile) // 声明 vMap1 := map[string]string{ "a": "北京", "b": "上海", "c": "广州", } // 添加 vMap1["d"] = "深圳" log.Println(vMap1) log.Println("-----") loop(vMap1) // 修改 vMap1["c"] = "杭州" log.Println("-----") loop(vMap1) // 删除 delete(vMap1, "c") log.Println("-----") loop(vMap1)}// 传值, 这里的 vMpa 是引用值传递func loop(vMap map[string]string) { // 遍历 for k, v := range vMap { log.Println("k=", k, "v=", v) }}
输出
main.go:22: map[a:北京 b:上海 c:广州 d:深圳]main.go:23: -----main.go:43: k= a v= 北京main.go:43: k= b v= 上海main.go:43: k= c v= 广州main.go:43: k= d v= 深圳main.go:28: -----main.go:43: k= d v= 深圳main.go:43: k= a v= 北京main.go:43: k= b v= 上海main.go:43: k= c v= 杭州main.go:33: -----main.go:43: k= b v= 上海main.go:43: k= d v= 深圳main.go:43: k= a v= 北京