day06 go map

什么是 map

  • 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"])
	}

}

posted @ 2024-07-02 00:52  染指未来  阅读(7)  评论(0编辑  收藏  举报