1.5.4 map排序示例
一、Map排序
在Go语言中,
map默认是无序的,不管是按照key还是按照value默认都不排序。如果要为
map排序,需要将key复制到一个切片,在对切片排序,然后使用for...range方法答应所有的key和valuefunc sortMap() { var arr map[int]int arr = make(map[int]int, 5) arr[0] = 88 arr[1] = 66 arr[2] = 99 // 定义一个切片 var b []int fmt.Println("排序前的值如下:") // 注意,map是无序的 for k, v := range arr { fmt.Println(k, v) b = append(b, v) } sort.Ints(b) fmt.Println("排序后的值如下") for k, v := range b { fmt.Println(k, v) } }结果:
排序前的值如下: 0 88 1 66 2 99 排序后的值如下 0 66 1 88 2 99
二、遍历地址问题
在Go语言的
map中,进行for...range遍历的时候,便利的键值使用同一块地址,同时这块地址是临时分配的。虽然地址没有变化,但内容一直在变化,遍历的顺序是随机的,示例如下:结果:
三、map类型的切片
map类型的切片假设想获取一个
map类型的切片,必须使用两次make()函数,第一次分配切片,第二次分配切片中的每一个map元素结果:
Last updated