package main; import ( "fmt" "sort" ) func main() { //类似其他语言中的哈希表或者字典,以key-value形式存储 //创建key为int值为string的map var a map[int]string = map[int]string{}; //同上 var b map[int]string = make(map[int]string); //通过make创建map var c = make(map[int]string); //简化写法 d := make(map[int]string); //设置值 d[0] = "hello"; d[1] = "world"; //删除某个键值,指定map和key delete(d, 1); //map的值又是一个map var e = make(map[int]map[int]string); //这里还需要make,上面的make只是初始化了最外层的map e[0] = make(map[int]string); e[0][0] = "123"; e[0][1] = "456"; e[1] = make(map[int]string); e[1][0] = "789"; e[1][1] = "101"; //判断map是否有值 if _, ok := e[2][2]; !ok { fmt.Println("没值"); } //循环map,k表示key,v是值 for k, v := range e { fmt.Println(k, v); } //创建一个长度为5,值为map[int]string的slice var f = make([]map[int]string, 5); //循环的make创建map for ix := range f { //对f操作需要通过索引来操作,不然都是对拷贝的操作 f[ix] = make(map[int]string); f[ix][0] = "hello"; f[ix][1] = "world"; } var g = map[int]string{1: "a", 2: "b", 3: "c", 4: "d"}; //map是无序的,每次循环输出的顺序都不一样 for k, v := range g { fmt.Println(k, v); } //这里可以通过slice对map的key进行排序,然后通过slice中的key操作map var h = make([]int, len(g)); ix := 0; for k, _ := range g { h[ix] = k; ix++; } //对slice排序 sort.Ints(h); fmt.Println(h); //通过slice中的key操作map for _, v := range h { fmt.Println(g[v]); } //把g进行键值互换 var i = make(map[string]int, len(g)); for k, v := range g { i[v] = k; } fmt.Println(i); fmt.Println(a, b, c, d, e); fmt.Println(d[0], d[1]); fmt.Println(f); }