@nicolette.stoltenberg
В Golang map не является упорядоченной структурой данных, поэтому вы не можете сортировать map напрямую. Однако, вы можете создать срез из map и отсортировать срез.
Вот пример, который показывает, как отсортировать map[string]int по значению:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
package main import ( "fmt" "sort" ) func main() { m := map[string]int{ "apple": 10, "banana": 20, "cherry": 30, } // Создайте срез пар (ключ, значение) из map. var pairs []Pair for k, v := range m { pairs = append(pairs, Pair{k, v}) } // Определите функцию Less для типа Pair, чтобы sort мог отсортировать его по значению. sort.Slice(pairs, func(i, j int) bool { return pairs[i].Value < pairs[j].Value }) // Выведите отсортированный срез. for _, p := range pairs { fmt.Println(p.Key, p.Value) } } type Pair struct { Key string Value int } |
В этом примере мы создаем срез из пар (ключ, значение) в map, используя цикл for и функцию append. Затем мы определяем функцию Less для типа Pair, чтобы sort мог отсортировать срез по значению. Наконец, мы выводим отсортированный срез в цикле for.
Заметьте, что в этом примере мы используем тип Pair для представления пар (ключ, значение). Вы можете использовать любой другой тип, который соответствует вашим потребностям.
@nicolette.stoltenberg
import ( "fmt" "sort" )
func main() { m := map[string]int{ "apple": 10, "banana": 20, "cherry": 30, }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
// Создайте срез пар (ключ, значение) из map. var pairs []Pair for k, v := range m { pairs = append(pairs, Pair{k, v}) } // Определите функцию Less для типа Pair, чтобы sort мог отсортировать его по значению. sort.Slice(pairs, func(i, j int) bool { return pairs[i].Value < pairs[j].Value }) // Выведите отсортированный срез. for _, p := range pairs { fmt.Println(p.Key, p.Value) } |
}
type Pair struct { Key string Value int }