本节学习目标
- 什么是map?
- 如何创建map?
- 给map添加元素
- 获取map中的元素
- 删除map中的元素
- 获取map的长度
- Map是引用类型
- Map的相等性
下面开始学习
- 1.什么是map?
map 是在 Go 中将值(value)与键(key)关联的内置类型。通过相应的键可以获取到值。
- 2.如何创建map
通过向 make 函数传入键和值的类型,可以创建 map。make(map[type of key]type of value) 是创建 map 的语法。
personSalary := make(map[string]int)
可以使用下面的方式创建吗?
var personSalary map[string]int
可以创建,但是如果你想personSalary 添加值的时候,go 会抛出一个panic ,但是第一种方式就不会出现这种异常
你可以使用下面的方式验证一下 两个声明实际创建的值是什么值
var json1 map[string]int
if(json1 == nil){
fmt.Println("空")
}
方式2 输入的是nil 方式1 不是nil
- 3.给map添加值
声明的时候初始化 map
package main
import (
"fmt"
)
func main() {
personSalary := map[string]int {
"steve": 12000,
"jamie": 15000,
}
personSalary["mike"] = 9000
fmt.Println("personSalary map contents:", personSalary)
}
map 添加了几个新元素
package main
import (
"fmt"
)
func main() {
personSalary := make(map[string]int)
personSalary["steve"] = 12000
personSalary["jamie"] = 15000
personSalary["mike"] = 9000
fmt.Println("personSalary map contents:", personSalary)
}
- 4.获取 map 中的元素
目前我们已经给 map 添加了几个元素,现在学习下如何获取它们。获取 map 元素的语法是 map[key] 。
package main
import (
"fmt"
)
func main() {
personSalary := map[string]int{
"steve": 12000,
"jamie": 15000,
}
personSalary["mike"] = 9000
employee := "jamie"
fmt.Println("Salary of", employee, "is", personSalary[employee])
}
检查map中是否存在某个key值
value, ok := map[key]
遍历map
package main
import (
"fmt"
)
func main() {
personSalary := map[string]int{
"steve": 12000,
"jamie": 15000,
}
personSalary["mike"] = 9000
fmt.Println("All items of a map")
for key, value := range personSalary {
fmt.Printf("personSalary[%s] = %d\n", key, value)
}
}
- 5.删除map中的值
package main
import (
"fmt"
)
func main() {
personSalary := map[string]int{
"steve": 12000,
"jamie": 15000,
}
personSalary["mike"] = 9000
fmt.Println("map before deletion", personSalary)
delete(personSalary, "steve")
fmt.Println("map after deletion", personSalary)
}
- 6.获取map的长度
package main
import (
"fmt"
)
func main() {
personSalary := map[string]int{
"steve": 12000,
"jamie": 15000,
}
personSalary["mike"] = 9000
fmt.Println("length is", len(personSalary))
}
len 是内置函数
- 7.map 判断
两个map 判等,需要逐个判断每个字段是否相等,但是如果判断map是否等于nil,可以直接使用map==nil来判断