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)
}