Map的三种声明方式

代码

  1. package main
  2. import (
  3. "io"
  4. "log"
  5. "os"
  6. )
  7. func main() {
  8. log.SetOutput(io.MultiWriter(os.Stdout))
  9. log.SetFlags(log.Lshortfile)
  10. // ==> 第一种声明方式
  11. // 声明 vMap1 是一种 map 类型, key 是 string, value 是 string 类型
  12. var vMap1 map[string]string
  13. if vMap1 == nil {
  14. log.Println("vMap1 是一个空map")
  15. }
  16. // 这种声明方式, 在使用 vMap1 前, 需要先用 make 给, map 分配数据空间
  17. vMap1 = make(map[string]string, 10)
  18. vMap1["A"] = "java"
  19. vMap1["B"] = "php"
  20. vMap1["C"] = "c++"
  21. log.Println(vMap1)
  22. // ==> 第二种声明方式
  23. vMap2 := make(map[string]string)
  24. vMap2["a"] = "java"
  25. vMap2["b"] = "php"
  26. vMap2["c"] = "c++"
  27. log.Println(vMap2)
  28. // ==> 第三种方式, 声明时,直接赋值
  29. vMap3 := map[string]string{
  30. "1": "java",
  31. "2": "php",
  32. "3": "java",
  33. }
  34. log.Println(vMap3)
  35. }

输出

  1. main.go:17: vMap1 是一个空map
  2. main.go:26: map[A:java B:php C:c++]
  3. main.go:33: map[a:java b:php c:c++]
  4. main.go:41: map[1:java 2:php 3:java]

Map 的基本使用

代码

  1. package main
  2. import (
  3. "io"
  4. "log"
  5. "os"
  6. )
  7. func main() {
  8. log.SetOutput(io.MultiWriter(os.Stdout))
  9. log.SetFlags(log.Lshortfile)
  10. // 声明
  11. vMap1 := map[string]string{
  12. "a": "北京",
  13. "b": "上海",
  14. "c": "广州",
  15. }
  16. // 添加
  17. vMap1["d"] = "深圳"
  18. log.Println(vMap1)
  19. log.Println("-----")
  20. loop(vMap1)
  21. // 修改
  22. vMap1["c"] = "杭州"
  23. log.Println("-----")
  24. loop(vMap1)
  25. // 删除
  26. delete(vMap1, "c")
  27. log.Println("-----")
  28. loop(vMap1)
  29. }
  30. // 传值, 这里的 vMpa 是引用值传递
  31. func loop(vMap map[string]string) {
  32. // 遍历
  33. for k, v := range vMap {
  34. log.Println("k=", k, "v=", v)
  35. }
  36. }

输出

  1. main.go:22: map[a:北京 b:上海 c:广州 d:深圳]
  2. main.go:23: -----
  3. main.go:43: k= a v= 北京
  4. main.go:43: k= b v= 上海
  5. main.go:43: k= c v= 广州
  6. main.go:43: k= d v= 深圳
  7. main.go:28: -----
  8. main.go:43: k= d v= 深圳
  9. main.go:43: k= a v= 北京
  10. main.go:43: k= b v= 上海
  11. main.go:43: k= c v= 杭州
  12. main.go:33: -----
  13. main.go:43: k= b v= 上海
  14. main.go:43: k= d v= 深圳
  15. main.go:43: k= a v= 北京