Golang-map

map

1.概念:Go语言中map是一种特殊的数据结构,一种元素对(pair)的无序集合,包含一个key和value值,被称为关联数组或字典。
2.初始化
3.判空
4.遍历:一般遍历与条件遍历
5.删除
6.查 若在map中找不到某个key,则返回key对应类型的零值,e.g. int对应0,string对应空,bool
7.元素类型为map的slice
8.元素类型为slice的map

练习题: 统计how do you do中每个单词出现的次数

package main

import (
    "fmt"
)

func main() {

    //初始化
    var a = make(map[string]int)
    a["勇者的等级"] = 10 //赋值
    a["勇者的HP"] = 107
    a["勇者的MP"] = 55
    a["勇者的攻击力"] = 99
    a["勇者的防御力"] = 99
    fmt.Println(a)

    //判空
    //常设变量ok来判空
    v, ok := a["勇者的颜值"]
    if !ok {
        fmt.Println("无此属性")
    } else {
        fmt.Println(v)
    }
    fmt.Println(a["勇者的颜值"]) //查无此key,则返回值为int的零值

    //遍历
    //1.一般遍历 for range
    for v, k := range a {
        fmt.Println(v, k)
    }
    //2.条件遍历
    //步骤:将key存入切片,用sort对该切片进行排序,再存入map,最后遍历

    //删除
    fmt.Println(a)
    delete(a, "勇者的防御力")
    fmt.Println(a)

    //元素类型为map的slice
    A := make([]map[string]int, 4, 4)
    fmt.Println(A)
    A[0] = a
    fmt.Println(A)

    //元素类型为slice的map
    B := make(map[string][]string, 2)
    fmt.Println(B)
    B["拯救公主的勇士"] = []string{"莱安", "杜鲁特"}
    fmt.Println(B)
    //vs code下如果不对内部的slice或map进行初始化,则会报错

    //练习题对"to be or not to be"的每个单词出现的次数进行统计

    C := make(map[string]string)
    C["单词1"] = "to"
    C["单词2"] = "be"
    C["单词3"] = "or"
    C["单词4"] = "not"
    C["单词5"] = "to"
    C["单词6"] = "be"
    count1 := 0
    count2 := 0
    count3 := 0
    count4 := 0
    for _, k := range C {
        if k == "to" {
            count1++
        } else if k == "be" {
            count2++
        } else if k == "or" {
            count3++
        } else if k == "not" {
            count4++
        }
    }
    fmt.Println(C)
    fmt.Println("to:", count1)
    fmt.Println("be:", count2)
    fmt.Println("or:", count3)
    fmt.Println("not:", count4)
}

运行结果:

map[勇者的HP:107 勇者的MP:55 勇者的攻击力:99 勇者的等级:10 勇者的防御力:99]
无此属性
0
勇者的防御力 99
勇者的等级 10
勇者的HP 107
勇者的MP 55
勇者的攻击力 99
map[勇者的HP:107 勇者的MP:55 勇者的攻击力:99 勇者的等级:10 勇者的防御力:99]
map[勇者的HP:107 勇者的MP:55 勇者的攻击力:99 勇者的等级:10]
[map[] map[] map[] map[]]
[map[勇者的HP:107 勇者的MP:55 勇者的攻击力:99 勇者的等级:10] map[] map[] map[]]
map[]
map[拯救公主的勇士:[莱安 杜鲁特]]
map[单词1:to 单词2:be 单词3:or 单词4:not 单词5:to 单词6:be]
to: 2
be: 2
or: 1
not: 1

你可能感兴趣的:(golangmap)