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