学习Golang之路(三)map的遍历

128 阅读2分钟

package main

import ( "fmt" "sort" )

func main() {

		var a map[string]int //map的声明
		a = make(map[string]int, 10) //使用map前一定要先map
		a["宋江"] = 30
		a["无用"] = 40
		a["林冲"] = 50
		fmt.Println(a)//map的声明方式之一
		b := make(map[string]string)
		b["hero1"] = "wukong"
		b["hero2"] = "tangsneg"
		fmt.Println(b)//map的声明方式之二
		c := map[string]string{
			"n01": "BJ",
			"no2": "SH",
		}
		fmt.Println(c)//map的声明方式之三

//使用map[string]map[string]string的数据类型 studentMap := make(map[string]map[string]string) studentMap["student01"] = make(map[string]string, 3) studentMap["student01"]["name"] = "李明" studentMap["student01"]["age"] = "20" studentMap["student01"]["adress"] = "上海" studentMap["student02"] = make(map[string]string, 3) studentMap["student02"]["name"] = "莉莉" studentMap["student02"]["age"] = "20" studentMap["student02"]["adress"] = "北京" fmt.Println(studentMap) fmt.Println(studentMap["student01"]) fmt.Println(studentMap["student02"]["adress"]) studentMap["student01"]["adress"] = "郑州" fmt.Println("student01修改信息后为", studentMap["student01"]) delete(studentMap["student01"], "adress") fmt.Println("student01新修改信息后为", studentMap["student01"]) val, ok := studentMap["student03"] if ok { fmt.Println("这个值为", val) } else { fmt.Println("不存在的") } //多重遍历 for k, v := range studentMap["student02"] { fmt.Printf("k = %v,v = %v\n", k, v) } //遍历多个map for k1, v1 := range studentMap { fmt.Println(k1) for k2, v2 := range v1 { fmt.Printf("k2 =%v , v2 =%v\n", k2, v2) } } fmt.Println(len(studentMap)) //如果切片的类型是map,则 称为map切片 var monters []map[string]string monters = make([]map[string]string, 2) if monters[0] == nil { monters[0] = make(map[string]string, 2) monters[0]["name"] = "牛魔王" monters[0]["age"] = "300"

	}
	if monters[1] == nil {
		monters[1] = make(map[string]string, 2)
		monters[1]["name"] = "犀牛精"
		monters[1]["age"] = "500"

	}
	fmt.Println(monters)

	newMonsters := make(map[string]string)
	newMonsters["name"] = "火云邪神"
	newMonsters["age"] = "30"
	monters = append(monters, newMonsters)
	fmt.Println(monters)

//map排序
test := make(map[int]int, 10)
test[10] = 9
test[12] = 1000
test[1] = 99
test[2] = 88
fmt.Println("test为", test)
var keys []int
for v, _ := range test {
	fmt.Printf("遍历后 v=%v\n", v)
	keys = append(keys, v)
	fmt.Println("排序前keys的值为:", keys)
	sort.Ints(keys)
	fmt.Println("排序后keys的值为:", keys)

	for i, k := range keys {
		fmt.Println(i)
		fmt.Printf("排序后test[%v]=%v\n", k, test[k])
	}

}

}