Map的三种声明方式
代码
package main
import (
"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 是一个空map
main.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 main
import (
"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= 北京