Sorting Arrays and Maps

The sort standard library is used for sorting slices, maps, and user define collections.

Sort Alphabetical

Use sort.Strings() to sort alphabetically

abc := []string{"jkl", "ghi", "abc", "def"}
sort.Strings(abc)
fmt.Println("Sorted ABC:", abc)

Sort Numeric

Use sort.Ints() to sort numerically

nums := []int{4, 2, 12, 5, 1, 3}
sort.Ints(nums)
fmt.Println("Sorted Nums:", nums)

Reverse Sort

Reverse sort, need to cast abc as a StringSlice to reverse and sort

sort.Sort(sort.Reverse(sort.StringSlice(abc)))
fmt.Println("Reverse ABC:", abc)

Sort Maps

To sort a map by keys, pull an array of keys out of the map, sort the keys and then iterate over the sorted keys. A map by itself is not sortable.

hash := map[string]int{
	"c": 3,
	"a": 1,
	"b": 2,
	"e": 5,
	"d": 4,
}

// Create array of kys
var keys []string
for k := range hash {
	keys = append(keys, k)
}

// Sort keys
sort.Strings(keys)

// Use ordered keys to loop through hash
for i := range keys {
	fmt.Printf("%s => %v\n", keys[i], hash[keys[i]])
}