概念
map
是一种无序的基于key-value
的数据结构,Go
语言中的map
是引用类型,必须初始化才能使用。
定义
签名
map[KeyType]ValueType
- KeyType:表示键的类型
- ValueType:表示键对应的值得的类型
map
类型的变量默认初始值为nil
,需要使用make()
函数来分配内存
make(map[KeyType]ValueType, [cap])
,cap
表示容量。
package main
import "fmt"
func main(){
// map的签名 KeyType表示键名,ValueType表示对应的值的类型
// map[KeyType]ValueType
scoreMap := make(map[string]int, 5)
scoreMap["语文"] = 90
scoreMap["数学"] = 91
scoreMap["外语"] = 92
// map[string]int,map[外语:92 数学:91 语文:90]
fmt.Printf("%T,%v\n",scoreMap,scoreMap)
scoreMap2 := map[string]int{
"语文":89,
"数学":88,
}
// map[数学:88 语文:89]
fmt.Print(scoreMap2)
}
判断某个键是否存在
package main
import "fmt"
func main(){
// 判断某个键是否存在 不存在返回:0 false
v,ok := scoreMap2["语文"]
fmt.Println(v,ok) //89 true
}
Map的遍历
package main
import "fmt"
func main(){
scoreMap := make(map[string]int, 5)
scoreMap["语文"] = 90
scoreMap["数学"] = 91
scoreMap["外语"] = 92
// 遍历
for k,v := range scoreMap{
// 语文 90
// 数学 91
// 外语 92
fmt.Println(k,v)
}
// 只想获取key
for k := range scoreMap{
// 语文
// 数学
// 外语
fmt.Println(k)
}
delete(scoreMap,"语文")
// map[外语:92 数学:91]
fmt.Println(scoreMap)
}