定义
在go语言中 map是散列表(hash表的引用),他是一个拥有键值对元素的无序集合,在这个集合中键是唯一的。可以通过键来获取,更新或移除操作,无论这个散列表有多大,这个操作基本都是通过常量时间完成的,所有可比较的类型,整型、字符串等都可作为key.
使用
func crateMap(){
// make(map[keyTYpe] valueType)
//创建相同键值map
steps := make(map[string] string)
fmt.Println(steps)
// 创建不同键值map
steps2 := make(map[string] int)
fmt.Println(steps2)
//通过字面值创建map
var step3 map[string]string = map[string]string{
"1":"1",
"2":"2",
}
fmt.Println(step3)
//通过短声明创建
steo4 := map[string]int{
"1":1,
"2":2,
}
操作
新增、编辑
func mapAddData(){
m := map[string]int{
"1":1,
"2":2,
}
m["3"] = 5
fmt.Println(m["3"])
m["3"] = 7
fmt.Println(m["3"])
}
删除
func mapDelete() {
m := map[string]int{
"1":1,
"2":2,
}
delete(m,"1")
fmt.Println(m)
}
判断键值是否存在
func exist() {
m := map[string]int{
"1":1,
"2":2,
}
_,ok := m["5"]
fmt.Println(ok)
}
循环和长度判断
func get() {
m := map[string]int{
"1":1,
"2":2,
}
for key,value := range m {
fmt.Printf("key:%s,value:%d\n",key,value)
}
// len()获取map的长度
fmt.Println(len(m))
}
引用 map是引用类型 当 map 被赋值为一个新变量的时候,它们指向同一个内部数据结构。因此,改变其中一个变量,就会影响到另一变量。
func mapByReferance(){
m := map[string]int{
"1":1,
"2":2,
}
fmt.Println(m)
newm:= m
newm["1"]=3
newm["5"]=6
fmt.Println(m)
fmt.Println(newm)
}