go 语言学习笔记⑦----映射(map)
使用make赋值遍历是否存在删除做函数参数
go 语言学习笔记⑦----映射(map)键值对,映射(类c++中的map )
map[keyType]valueType
keyType 不可以是切片了, 函数以及包含切片的结构类型
eg mp := map[int]string{}
无序存储
只有len没有cap
package main
import (
"fmt"
)
func main() {
mp := map[int]string{}
mp[1] = "111"
fmt.Println(mp[1])
//111
mp[2] = "222"
fmt.Println(len(mp))
//2
}
make
通过make创建mp := make(map[int]string)
制定长度(容量)里面无数据mp := make(map[int]string, 2)
如果key已经存在, 修改对应value
如果key不存在, 创建key值为value
自动扩容
for key , value := range map {
}
range第一个返回的是键 , 第二个是值
package main
import (
"fmt"
)
func main() {
mp := map[int]string{1: "111", 2: "222"}
for key, value := range mp {
fmt.Println(key, value)
}
}
是否存在
value , ok = mp[1]
第一个是value第二个是boolean
package main
import (
"fmt"
)
func main() {
mp := map[int]string{1: "111", 2: "222"}
value, ok := mp[1]
fmt.Println(value, ok)
//111 true
value, ok = mp[4]
fmt.Println(value, ok)
// false
}
删除
delete(变量名, 值)
package main
import (
"fmt"
)
func main() {
mp := map[int]string{1: "111", 2: "222"}
fmt.Println(len(mp))
//2
delete(mp, 1)
fmt.Println(len(mp))
//1
}
做函数参数
package main
import (
"fmt"
)
func deleteMap(m map[int]string) {
delete(m, 1)
}
func main() {
mp := map[int]string{1: "111", 2: "222"}
fmt.Println(len(mp))
//2
deleteMap(mp)
fmt.Println(len(mp))
//1
}



