1.定义
key-value
形式数据存储的数据结构,与JAVA
中map
作用是一样的。
2.map入门操作
//map的声明(定义)
var m map[string]int
//map的初始化
m = make(map[string]int)
//map中添加数据
m["age"] = 100
//打印map数据
fmt.Printf("%v", m)
注意:
1.map
的声明和map
的初始化非同一个概念。未初始化的map
是nil
,nil
的map
不允许往里面添加值,否则会出现(panic: assignment to entry in nil map)错误,但是可以取得到默认值。
//map的声明(定义),不初始化
var m map[string]int
fmt.Printf("%v\n", m["age"]) //能够打印0
m["age"] = 100 //报错 panic: assignment to entry in nil map
fmt.Printf("%v\n", m) //不执行
2.所谓的nil
可以理解成空指针
,它不指向任何内存地址,而make()
方法则是为map
分配内存地址。
3.make()
可以用来初始化map
,也可以map
声明时候直接初始化。
//声明+初始化
m := map[string]int{"age": 10}
fmt.Printf("%v\n", m["age"]) //10
m["sex"] = 0 //设置sex=0
fmt.Printf("%v\n", m) //map[age:10 sex:0]
3.map增删改查操作
//声明map
var m map[string]string
//初始化map
m = make(map[string]string)
//map增加数据
m["name"] = "mongobx"
m["age"] = "18"
m["sex"] = "male"
fmt.Printf("%v\n", m) //map[age:18 name:mongobx sex:male]
//map删除数据
delete(m, "sex")
fmt.Printf("%v\n", m) //map[age:18 name:mongobx]
//map修改数据
m["age"] = "22"
fmt.Printf("%v\n", m) //map[age:22 name:mongobx]
//map查询数据(三种)
//查询1
name := m["name"]
fmt.Printf("%v\n", name) //mongobx
//查询2
name, ok := m["name"] //name存在ok为true,否则为false
fmt.Printf("%v-%v\n", name, ok) //mongobx-tru
//查询3
_, ok := m["name"]
fmt.Printf("%v\n", ok) //true
4.map的遍历:
//声明map
var m map[string]string
//初始化map
m = make(map[string]string)
//map添加数据
m["name"] = "mongobx"
m["age"] = "18"
m["sex"] = "male"
fmt.Printf("%v\n", m)
//遍历key
for key := range m {
fmt.Printf("%v\n", key)
}
//遍历value
for _, value := range m {
fmt.Printf("%v\n", value)
}
//遍历key,value
for key, value := range m {
fmt.Printf("%v-%v\n", key, value)
}
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。