Go语言中map

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
package main

import (
"fmt"
"strings"
)

func main() {
// 声明map
// map 是无序 基于key-value 的数据结构 map 是引用类型 必须先初始化才能使用
// 定义语法 map[KeyType]ValueType
// a := map[string]int
// make 申请内存 初始化
// a := make(map[string]int, 8)
// a["test"] = 1
// fmt.Println(a)
// fmt.Printf("%#v", a)

// scoreMap := make(map[string]int)
// scoreMap["张三"] = 60
// scoreMap["李四"] = 90
// fmt.Println(scoreMap)
// 判断某个键是否存在
// 语法 value, ok := map[key]
// v, ok := scoreMap["李四"]
// if ok {
// fmt.Println(v)
// } else {
// fmt.Println("此人记录不存在")
// }

// 遍历
// 语法 for range
// 只遍历key
// for k := range(scoreMap) {
// fmt.Println(k)
// }
// 只遍历value
// for _, v := range(scoreMap) {
// fmt.Println(v)
// }
// 遍历
// for k, v := range(scoreMap) {
// fmt.Println(k, v)
// }

// 删除某个键值对
// 语法 delete(map, key)
// delete(scoreMap, "李四")
// fmt.Println(scoreMap)

// scoreMap := make(map[string]int, 50)
// for i := 1; i <= 50; i++ {
// key := fmt.Sprintf("stu%02d", i)
// value := rand.Intn(100)
// scoreMap[key] = value
// }
// fmt.Println(scoreMap)
// map 是无序
// for k, v := range(scoreMap) {
// fmt.Println(k, v)
// }

// 取出所有key存放切片中 对切片进行排序 然后通过key取出value
// keys := make([]string, 0, 50)
// for key := range scoreMap {
// keys = append(keys, key)
// }
// sort.Strings(keys)
// for _, key := range keys {
// fmt.Println(key, scoreMap[key])
// }

// 定义map类型的切片
// mapSlice := make([]map[string]string, 3)
// for index, value := range mapSlice {
// fmt.Printf("index: %d, value: %v\n", index, value)
// }
// mapSlice[0] = make(map[string]string, 10)
// mapSlice[0]["name"] = "zhangsan"
// mapSlice[0]["passwd"] = "niubimima"
// mapSlice[0]["address"] = "nibuzhidaodedifang"
// for index, value := range mapSlice {
// fmt.Printf("index: %d, value: %v\n", index, value)
// }

// 值为切片类型的map
// sliceMap := make(map[string][]string, 3)
// fmt.Println(sliceMap)
// key := "李四"
// value, ok := sliceMap[key]
// if !ok {
// value = make([]string, 0, 2)
// }
// value = append(value, "张三", "王二")
// sliceMap[key] = value
// fmt.Println(sliceMap)

s1 := "how do you do"
slice1 := strings.Split(s1, " ")
// fmt.Printf("%T", slice1)
map1 := make(map[string]int)
for _, value := range(slice1) {
_, ok := map1[value]
if ok {
map1[value] ++
} else {
map1[value] = 1
}
}
fmt.Println(map1)
}