Golang - map和切片混用

    xiaoxiao2022-07-12  184

    文章目录

    元素类型为map的切片值为切片的map练习: 统计字符串中出现的字符次数


    元素类型为map的切片

    package main import "fmt" func main() { // 元素类型为 map 的切片: [map, map, map] // 先初始化切片, 因为后续需要用索引初始化 map, 所以要给长度 a := make([]map[string]int, 2) // 使用切片的索引对 map 进行初始化 a[0] = make(map[string]int, 2) // 赋值 a[0]["Tom"] = 100 a[0]["Tim"] = 99 fmt.Println(a) // [map[Tim:99 Tom:100] map[]], 这里因为长度为 2, 用零值补齐, 所以会有 map[] }

    值为切片的map

    package main import "fmt" func main() { // 值为切片的 map: map[string][]int, 例: ["语文"][100,99] // 先初始化外层的 map a := make(map[string][]int, 2) // 再初始化内层的切片 a["语文"] = make([]int, 0, 2) // 给切片赋值 a["语文"] = append(a["语文"], 100, 99) a["数学"] = make([]int, 0, 2) a["数学"] = append(a["数学"], 97, 93) fmt.Println(a) }

    练习: 统计字符串中出现的字符次数

    package main import ( "fmt" "strings" ) func main() { s := "how do you do" // 得到一个切片 words := strings.Split(s, " ") // 遍历这个切片, 如果字母存在, v+1, 如果字母不存在, 创建 a := make(map[string]int, 10) // 创建一个map 用于接收 // 遍历 words 切片, 把每个单词拿出来 for _, word := range words { // 在 map 中查找, 如果存在, 计数+1, 如果不存在, 则计数=1 v, ok := a[word] if ok { a[word] = v + 1 } else { a[word] = 1 } } fmt.Println(a) // map[do:2 how:1 you:1] }
    最新回复(0)