Go语言中map

作者: ropon 分类: Go 发布时间: 2019-11-07 09:55
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)
}

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!