go 3.31 map

  1. map的基本使用
  2. map遍列
  3. delete删除key
  4. map作函数参数

map的基本使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

func main() {
var m1 map[int]string // var声明一个map
fmt.Println("m1 = ", m1)
fmt.Println("len(m1) = ", len(m1)) //map只有len,没有cap

// 可以通过make创建
m2 := make(map[int]string)
fmt.Println("m2 = ", m2)
fmt.Println("len(m2) = ", len(m2))

// 可以通过make创建,指定长度,但是一个元素也没有,长度仍然为0,相当于指定的容量
m3 := make(map[int]string, 2)
m3[1] = "a" //map操作
m3[2] = "a"
m3[3] = "a"
m3[4] = "a"
m3[2] = "b" // 键值是唯一的,如果键的值已经存在,再次赋值就修改,如果不存在,则增加
fmt.Println("m3 = ", m3)
fmt.Println("len(m3) = ", len(m3))

// map初始化
m4 := map[int]string{1: "a", 2: "b"}
fmt.Println("m4 = ", m4)
fmt.Println("len(m4) = ", len(m4))
}

map遍列

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package main

import (
"fmt"
)

func main() {
m := map[int]string{1: "aaa", 2: "bbb", 3: "ccc"}
//通过range返回key,value键值对
for key, value := range m {
fmt.Printf("%d ===> %s\n", key, value)
}

// 如何判断一个key是否存在
// 返回值value为key 0 对应的值,返回值ok为key 0是否存在的条件,返回值ok为true,表示存在
value, ok := m[0]
if ok == true {
fmt.Println("m[1]=", value)
}else{
fmt.Println("m[0] not exists")
}

}

delete删除key

1
2
3
4
 m := map[int]string{1: "aaa", 2: "bbb", 3: "ccc"}
key := 1
delete(m, key)
fmt.Println(m)

map作函数参数

map作函数参数时是引用传递

1
2
3
4
5
6
7
8
9
10
11
func mondify_key(m map[int]string) {
delete(m, 2)
m[3] = "ddd"
}

func main() {
m := map[int]string{1: "aaa", 2: "bbb", 3: "ccc"}
fmt.Println(m)
mondify_key(m) // 作函数参数
fmt.Println(m)
}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 rootid@126.com

文章标题:go 3.31 map

本文作者:Shawn

发布时间:2019-05-25, 23:00:26

最后更新:2019-05-31, 16:04:08

原始链接:https://gitrootid.github.io/2019/05/25/golang/go-3-31-map_/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。

目录
×

喜欢就点赞,疼爱就打赏