golang map需要make吗


本文摘自php中文网,作者(*-*)浩,侵删。

map

类似其它语言中的哈希表或字典,以key-value形式存储数据 (推荐学习:go)

key必须是支持==或!=比较运算的类型,不可以是函数、map或slice

Map通过key查找value比线性搜索快很多

Map使用make()创建,支持:=这种简写方式

make([keyType]valueType,cap),cap表示容量,可省略

超出容量时会自动扩容,但尽量提供一个合理的初始值

使用len()获取元素个数

键值对不存在时自动添加,使用delete()删除某键值对

使用for range对map和slice进行迭代

map的声明与默认值

1

2

3

4

5

6

7

8

9

10

11

12

// 声明

var m map[string]string

  

// bool 的零值是false

var m map[int]bool

a, ok := m[1]

fmt.Println(a, ok) // false  false

  

// int 的零值是0

var m map[int]int

a, ok := m[1]

fmt.Println(a, ok) // 0  false

map的声明的时候默认值是nil ,此时进行取值,返回的是对应类型的零值(不存在也是返回零值)

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

27

28

29

30

31

32

33

34

35

36

37

// 先声明map

var m1 map[string]string

// 再使用make函数创建一个非nil的map,nil map不能赋值

m1 = make(map[string]string)

// 最后给已声明的map赋值

m1["a"] = "aa"

m1["b"] = "bb"

  

// 直接创建

m2 := make(map[string]string)

// 然后赋值

m2["a"] = "aa"

m2["b"] = "bb"

  

// 初始化 + 赋值一体化

m3 := map[string]string{

    "a": "aa",

    "b": "bb",

}

  

// ==========================================

// 查找键值是否存在

if v, ok := m1["a"]; ok {

    fmt.Println(v)

} else {

    fmt.Println("Key Not Found")

}

  

// 遍历map

for k, v := range m1 {

    fmt.Println(k, v)

}

  

m := make(map[interface{} ]interface{})

m[1] = 56

m["str"] = "dfsdf"

fmt.Println(m)

map数据类型初始化:

阅读剩余部分

相关阅读 >>

golang 类似php中 http_build_query 方法

手撸golang etcd raft协议之6

你知道go程序的基本要素吗

[go] go语言实战-为博客园增加gofly在线客服功能

go的自动重载工具如何安装

手撸golang 基本数据结构与算法 堆排序

go 读写锁实现原理解读

golang如何设置时间

go语言标准库之log

go语言学习4-数组类型

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...