什么是 map
package main
import "fmt"
func main() {
/*
- map 是什么。类似于字典
- 特点:
- 无顺序
- 键值对
- 引用类型
*/
// 声明 map
var map01 map[int]string
fmt.Printf("map01 = %v,类型:%T\n", map01, map01)
if map01 == nil {
fmt.Println("空map")
}
// 使用 make 创建 map
var map02 = make(map[int]string)
fmt.Println("make 定义 map:", map02)
// 初始化map。定义map,给map赋数据
var map03 = map[string]int{"go": 1, "java": 2}
fmt.Println(map03)
fmt.Printf("map03类型:%T", map03)
}
map 使用
package main
import "fmt"
func main() {
// 使用 map
// 1. 初始化map
var map04 = make(map[int]int)
map04[1] = 123
map04[3] = 222
map04[4] = 675423
fmt.Println(map04)
// 2. map 通过key取值
fmt.Println(map04[1])
fmt.Println(map04[2]) // 不存在的key 返回 0 / 空
// 判断 key 是否存在map。 value = map[key] 隐藏返回值 ok-idiom,可选参数
value, ok := map04[1]
value1, ok1 := map04[2]
fmt.Println("map中的key是否存在01:", value, ok) // 如果 key 存在 。 ok 结果为true,否则为false
if ok {
fmt.Println("map04中存在key : 1")
} else {
fmt.Println("map04中不存在key: 1")
}
fmt.Println("map中的key是否存在02:", value1, ok1) // 如果 key 存在 。 ok 结果为true,否则为false
// 3. 修改 map数据
fmt.Println("修改前:", map04)
map04[4] = 200
fmt.Println("修改后:", map04)
// 4. delete 删除map中的数据
fmt.Println("delete 删除map某个key前:", map04)
delete(map04, 4)
fmt.Println("delete 删除map某个key后:", map04)
// 5. 获取map的长度 len。 map没有容量
fmt.Println("map04的长度", len(map04))
// 6. 遍历map
for k, v := range map04 {
// k 是键
// v 是值
fmt.Println("for range 遍历---", "key:", k, "value:", v)
}
}
map 和 切片结合
package main
import "fmt"
func main() {
// map 和 slice 结合使用
var userMap1 = make(map[string]string)
userMap1["name"] = "jack"
userMap1["age"] = "19"
userMap1["sex"] = "man"
userMap1["addr"] = "zh"
var userMap2 = make(map[string]string)
userMap2["name"] = "lisi"
userMap2["age"] = "30"
userMap2["sex"] = "woman"
userMap2["addr"] = "zh"
var userMap3 = map[string]string{"name": "zhangsna", "age": "30"}
// 将 userMap1 和 userMap2 和 userMap3 存储到切片
userDatas := make([]map[string]string, 0, 10)
userDatas = append(userDatas, userMap1, userMap2, userMap3)
fmt.Println("切片:", userDatas)
// 遍历 userDatas 切片
for _, data := range userDatas {
fmt.Println(data["name"], data["age"])
}
}