字典
map结构在大多数编程语言中都语法内置或是提供了标准库,而且有各种各样的叫法,比如:字典、关联数组、键值对映射,都是一样的意思。Go语言也是内置了这个功能,底层采用无序的哈希表实现,不过个人认为Go语言的map并不是什么好的设计,用起来还是比较别扭的。
初始化map
下面代码初始化了一个map并赋值。
var m = make(map[string]string)
m["key1"] = "value1"
m["key2"] = "value2"
我们也可以直接指定map的初始值。
var m = map[string]string{"key1" : "value1", "key2" : "value2", "key3" : "value2"}
声明一个空的map其值为nil,和数组可以append()不同,空的map并没有什么用,它不能被设置键和值。
var m map[string]Vector2
map相关操作
这里我们介绍下map的增删改查操作。
添加元素
添加元素比较简单,前面代码已经实现了,例子代码如下。
m["point1"] = Vector2{0, 0}
注意:map必须先用make初始化,否则变量值为nil,无法进行任何操作。
删除元素
删除元素可以使用delete函数实现。
var m = map[string]string{"key1" : "key1", "key2" : "key2", "key3" : "key3"}
delete(m, "key1")
获取元素
获取元素直接使用键进行访问即可。
var m = map[string]string{"key1" : "key1", "key2" : "key2", "key3" : "key3"}
fmt.Println(m["key1"])
检查某个键是否存在
下面写法中,为map的取元素赋值语法多加一个接收变量,能够检查一个键是否在map中存在,exist为布尔类型,可用于检查该元素是否存在。
var m = map[string]string{"key1" : "key1", "key2" : "key2", "key3" : "key3"}
ele,exist := m["key1"]
fmt.Println(ele, exist)
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。