map
映射关系容器,key-value的数据结构,引用类型,无序的,必须初始化才能使用。
01 定义
01 make函数声明
package main
import "fmt"
func main() {
a := make(map[string]int, 10)
fmt.Println(a)
}
注意:
中括号中是key的数据类型,外边是value的数据类型,10可以省略,表示map的容量。但是一般情况下,设置合理的容量。
02 声明赋值
package main
import "fmt"
func main() {
a := map[string]int{
"lynn": 1,
"mac": 2,
}
fmt.Println(a)
}
03 判断key存在
package main
import "fmt"
func main() {
a := map[string]int{
"lynn": 1,
"mac": 2, // 逗号必须有
}
value, ok := a["lynn"]
fmt.Println(value, ok)
}
注意:
ok的结果是布尔值,true和false
value是对应key的value
04 map的遍历
package main
import "fmt"
func main() {
a := make(map[string]int, 3)
a["lynn"] = 3
a["mac"] = 4
for key, value := range a{
fmt.Println(key, value)
}
}
注意:
只有key时,key的值是map的key,要想只要value,把key用下划线_表示
05 删除某个键值对
delete(map, key)
package main
import "fmt"
func main() {
a := make(map[string]int, 3)
a["lynn"] = 3
a["mac"] = 4
delete(a, "mac")
fmt.Println(a)
}
注意:
如果key不存在,不做处理
06 元素为map的切片
切片的元素是map
package main
import "fmt"
func main() {
// 直接声明赋值
a := []map[string]int{
{
"age": 18
},
}, // 逗号必须有
// make声明
b := make([]map[string]int, 1)
b[0] = make(map[string]int, 1)
b[0]["age"] = 18
fmt.Println(a, b)
}
07 value为切片的map
map的value是切片
package main
import "fmt"
func main() {
// 直接声明赋值
a := map[string][]string{
"name": {
"lynn",
},
}
fmt.Println(a)
// make声明
b := make(map[string][]string, 1)
key := "name"
value, ok := b[key]
if ! ok{
value = make([]string, 1)
}
value = append(value, "lynn")
b["name"] = value
fmt.Println(b)
}