Golang中的map
map是一种key:value
键值对的数据结构容器,map内部实现是哈希表(hash
)。
map是最重要的一点是通过key来快速检索数据,key类似于索引,只想数据的值。
map是引用类型的。
map的语法格式
可以使用内建函数make
也可以使用map
关键字来定义map
1 2 3 4
| var map_variable map[key_data_type]value_data_type
map_variable = make(map[key_data_type]value_data_type)
|
map_variable
:map变量名称
key_data_type
:key的数据类型
value_data_type
:值的数据类型
实例
下面声明一个保存个人信息的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 27 28 29 30
| package main
import "fmt"
func map_variable() { var m1 map[string]string m1 = make(map[string]string) fmt.Printf("m1: %v\n", m1) fmt.Printf("m1: %T\n", m1) var m2 = map[string]string{"name": "weiyunfeng", "age": "23", "email": "[email protected]"} fmt.Printf("m2: %v\n", m2) fmt.Printf("m2: %T\n", m2)
var m3 map[string]string m3 = make(map[string]string) m3["name"] = "weiyunfeng" m3["age"] = "23" m3["email"] = "[email protected]" fmt.Printf("m3: %v\n", m3) fmt.Printf("m3: %T\n", m3) } func main() { map_variable() }
|
运行结果
1 2 3 4 5 6
| m1: map[] m1: map[string]string m2: map[age:23 email:905577137@qq.com name:weiyunfeng] m2: map[string]string m3: map[age:23 email:905577137@qq.com name:weiyunfeng] m3: map[string]string
|
访问map
由于map有无序的特性,所以key就是它的唯一性标识
可以通过下标key
获得其值,例如:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| package main
import "fmt"
func key_map_variable() { var m1 = map[string]string{"name": "weiyunfeng", "age": "23", "email": "[email protected]"} var key = "name" var value = m1[key] fmt.Printf("value: %v\n", value) }
func main() { key_map_variable() }
|
运行结果
判断某个键是否存在
Golang中有个判断map中 键是否存在的特殊写法,格式如下:
如果ok为true
,存在;否则,不存在。
实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| package main
import "fmt"
func ok_map_variable() { var m1 = map[string]string{"name": "weiyunfeng", "age": "23", "email": "[email protected]"} var k1 = "name" var k2 = "sex" v, ok := m1[k1] fmt.Printf("v: %v\n", v) fmt.Printf("ok: %v\n", ok) v, ok = m1[k2] fmt.Printf("v: %v\n", v) fmt.Printf("ok: %v\n", ok) } func main() { ok_map_variable() }
|
运行结果
1 2 3 4
| v: weiyunfeng ok: true v: ok: false
|