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 mainimport (    "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勇者的攻击力 99map[勇者的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: 2be: 2or: 1not: 1