Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 按字母顺序获取地图中的键的简单方法_Sorting_Map_Go - Fatal编程技术网

Sorting 按字母顺序获取地图中的键的简单方法

Sorting 按字母顺序获取地图中的键的简单方法,sorting,map,go,Sorting,Map,Go,在围棋中,按字母顺序排列地图中的键最简单的方法是什么?这是我能做的最短的方法: package main import "container/vector" import "fmt" import "sort" func main() { m := map[string]string {"b":"15", "z":"123123", "x":"sdf", "a":"12"} var keys vector.StringVector; for k,_ := range

在围棋中,按字母顺序排列地图中的键最简单的方法是什么?这是我能做的最短的方法:

package main

import "container/vector"
import "fmt"
import "sort"

func main() {
    m := map[string]string {"b":"15", "z":"123123", "x":"sdf", "a":"12"}
    var keys vector.StringVector;
    for k,_ := range ( m ) {
            keys.Push(k)
    }
    sort.Sort( &keys )
    fmt.Printf("%v\n", keys)
}

您正在使用StringVector对字符串数组进行排序。为了最小化开销,可以对字符串数组进行排序

package main

import (
    "fmt"
    "sort"
)

func main() {
    m := map[string]string{"b": "15", "z": "123123", "x": "sdf", "a": "12"}
    mk := make([]string, len(m))
    i := 0
    for k, _ := range m {
        mk[i] = k
        i++
    }
    sort.Strings(mk)
    fmt.Println(mk)
}
输出:

[a b x z]

这将是最优雅的方法:

package main

import (
    "fmt"
    "sort"
)

func main() {
    m := map[string]string{"b": "15", "z": "123123", "x": "sdf", "a": "12"}
    keys := make([]string, 0, len(m))
    for key := range m {
        keys = append(keys, key)
    }
    sort.Strings(keys)
    fmt.Println(keys)
}

SortStrings
func似乎在当前(2012年3月)Go中消失了。现在似乎只是
Strings
(即
sort.Strings(mk)
)基准测试First-4 5000000 367 ns/op 96 B/op 2 allocs/op基准测试Second-4 5000000 352 ns/op 96 B/op 2 allocs/op 2 PASS ok slice 4.383s