We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Map 是一个无序的键值对数据集合,通过 key 快速检索数据。
Map
key
map[keyType]valueType
package basic import "fmt" func DeclaratMap(){ // 声明一个空的 map m1 := map[int]string{} fmt.Println(m1) // map[] // 声明一个 map 并赋初始值 m2 := map[int]string{ 0: "Java", 1: "C#", 2: "Python", 3: "Golang" } fmt.Println(m2) // map[3:Golang 0:Java 1:C# 2:Python] }
make(map[keyType]ValueType, cap)
cap
package basic import "fmt" func DeclaratMapByMake() { m := make(map[int]string, 3) m[0] = "Java" m[1] = "C#" m[2] = "Python" fmt.Println(m, len(m)) // map[1:C# 2:Python 0:Java] 3 m[3] = "Golang" fmt.Println(m, len(m)) // map[0:Java 1:C# 2:Python 3:Golang] 4 }
Map 的 key 必须是支持 == 或 != 比较运算符的数据类型。
==
!=
for range
func TraverseMap() { m2 := map[int]string{0: "Java", 1: "C#", 2: "Python", 3: "Golang"} for key, value := range m2 { fmt.Println(key, ":", value) } }
func NestedMap() { var array = [...]string{"Java", "C#", "Python", "Golang"} // 声明一个 嵌套 map 父级 key 类型为 int,value 为map m := make(map[int]map[string]int) for i, value := range array { // 判断嵌套的 map 是否初始化 _, isMake := m[i][value] if !isMake { // 对嵌套的 map 初始化 m[i] = make(map[string]int) } m[i][value] = i } fmt.Println(m) // map[0:map[Java:0] 1:map[C#:1] 2:map[Python:2] 3:map[Golang:3]] }
可以直接通过 map[key] 的方式取 Map 中的值,当 key 值不存在时,则会返回一个 value 的初始值;
map[key]
value
func GetMapValue() { m1 := map[string]int{"Golang": 20, "Java": 30, "C#": 40} fmt.Println(m1["Python"]) // 0 }
那么问题来了,如果我们想要通过用户提供的 key 获取的值做判断,key 如果不存在,则添加,该如何判断呢?
实际上, map[key] 有两个返回值,一个是根据 key 返回的值,另一个则是用于判断 key 是否存在
func GetMapValue() { m1 := map[string]int{"Golang": 20, "Java": 30, "C#": 40} if _, isExist := m1["Python"]; !isExist { m1["Python"] = 10 } fmt.Println(m1) // map[C#:40 Python:10 Golang:20 Java:30] }
使用 delete(map, key) 方法删除 Map 中的数据;
delete(map, key)
func DeleteMapData(){ m1 := map[string]int{"Golang": 20, "Java": 30, "C#": 40} fmt.Println(m1) // map[Golang:20 Java:30 C#:40] delete(m1, "Java") fmt.Println(m1) // map[Golang:20 C#:40] }
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Go 语言中的Map
Map
是一个无序的键值对数据集合,通过key
快速检索数据。map[keyType]valueType
格式声明Map
;make(map[keyType]ValueType, cap)
格式声明Map
;其中cap
表示容量,可以省略,当Map
超过设置的容量时,会自动扩展;Map
的key
必须是支持==
或!=
比较运算符的数据类型。for range
遍历Map
;Map
是支持嵌套的,但是需要对嵌套后的Map
进行初始化;Map 的操作
Map
的取值可以直接通过
map[key]
的方式取Map
中的值,当key
值不存在时,则会返回一个value
的初始值;那么问题来了,如果我们想要通过用户提供的
key
获取的值做判断,key
如果不存在,则添加,该如何判断呢?Map
中的数据使用
delete(map, key)
方法删除Map
中的数据;The text was updated successfully, but these errors were encountered: