golang入门之map

map的概念

map是一种key :value键值对的数据结构容器。map内部实现是哈希表( hash )。

map最重要的一点是通过key来快速检索数据,key类似于索引,指向数据的值。

map是引用类型的。

map的声明

//var 变量名 map[key类型]value类型
var m1 map[string]string

map的初始化

//方法1:先var声明,再用make初始化
var m1 map[string]string
m1 = make(map[string]string)
m1["name"]="zhangsan"
m1["age"]="26"
m1["email"]="[email protected]"
fmt.Printf("m1: %v\n", m1)

//方法2:var声明的同时进行初始化
var m2 = map[string]string{"name":"lisi","age":"18","email":"[email protected]"}
fmt.Printf("m2: %v\n", m2)

//方法3:先make声明并分配内存后赋值
m3 := make(map[string]string)
m3["name"]="wangwu"
m3["age"]="24"
m3["email"]="[email protected]"
fmt.Printf("m3: %v\n", m3)

//方法4:与方法2相同,使用短声明
m4 := map[string]string{
    "name": "chenliu",
    "age": "35",
    "email": "[email protected]",
}
fmt.Printf("m4: %v\n", m4)

/*结果:
m1: map[age:26 email:[email protected] name:zhangsan]
m2: map[age:18 email:[email protected] name:lisi]
m3: map[age:24 email:[email protected] name:wangwu]
m4: map[age:35 email:[email protected] name:chenliu]
*/

访问map

//初始化m1
var m1 = map[string]int{"yi": 1,"er": 2,"san": 3,"si": 4}
//方法1:直接打印
fmt.Printf("m1[\"yi\"]: %v\n", m1["yi"])
//结果:m1["yi"]: 1

//方法2:赋值后打印
key :="er"
value := m1[key]
fmt.Printf("key: %v value: %v\n", key,value)
//结果”key: er value: 2

判断map中是否存在某个值

//声明并初始化m1
var m1 = map[string]int{"yi": 1,"er": 2,"san": 3,"si": 4}
k1 := "yi"
k2 := "wu"
v1,ok := m1[k1]
fmt.Printf("v1: %v\n", v1)
fmt.Printf("ok: %v\n", ok)
fmt.Println("----------------")
v2,ok := m1[k2]
fmt.Printf("v2: %v\n", v2)
fmt.Printf("ok: %v\n", ok)
/*结果:
v1: 1
ok: true
----------------
v2: 0
ok: false
*/

map的遍历

//声明并初始化m1
var m1 = map[string]int{"yi": 1,"er": 2,"san": 3,"si": 4}
//遍历m1的key值
for k := range m1 {
    fmt.Printf("k: %v ", k)
}
//结果:k: yi k: er k: san k: si

//遍历m1的key和value值
for k, v := range m1 {
    fmt.Printf("%v: %v ", k, v)
}
//结果:er: 2 san: 3 si: 4 yi: 1

//遍历m1的value值
for _, v := range m1 {
    fmt.Printf("v: %v ", v)
}
//结果:v: 3 v: 4 v: 1 v: 2 

map的删除

//声明并初始化m1
var m1 = map[string]int{"yi": 1,"er": 2,"san": 3,"si": 4}
//删除单个指定key值
delete(m1,"yi")
fmt.Printf("m1: %v\n", m1)
//结果:m1: map[er:2 san:3 si:4]

//删除所有key值,清空map
for k := range m1 {
    delete(m1, k)
}
fmt.Printf("m1: %v\n", m1)
//结果:m1: map[]

你可能感兴趣的:(golang,golang,开发语言,后端)