見出し画像

golang マップをキー順にソートする方法

今回はgolangのマップをキー順にソートする方法ついて解説していきます。


マップをキー順にソートする

Go言語のマップは、キーと値のペアを格納するためのデータ構造ですが、そのキーには順序がないため、デフォルトではソートされません。
そのためマップの中身を取得した場合は、順序が保証されずに毎回バラバラの結果となります。

順序を保証したい場合はマップのキー順にソートするように実装しなければなりません。

package main

import (
    "fmt"
    "sort"
)

func main() {
    m := map[string]int{
        "Alice":   23,
        "Charlie": 31,
        "Bob":     19,
    }

    var keys []string
    for k := range m {
        keys = append(keys, k)
    }

    sort.Strings(keys)

    for _, k := range keys {
        fmt.Println(k, m[k])
    }
}

まずはmapからすべてのキーを抽出し、keysというstring型のスライスに追加します。forループとrangeを使うことで、map内のすべてのキーを取得できます。

次にsort.Strings関数を用いてスライスをアルファベット順にソートします。

最後にソートされたキースライスをループし、各キーに対応するマップの値を出力しています。今回はfmt.Printlnを使って、キーとそれに対応する値をコンソールに表示しています。

よって出力結果は以下となります。

Alice 23
Bob 19
Charlie 31


golangをもっと詳しくなりたい方に

初めてのGo言語

Go言語の入門から応用まではこの一冊で網羅されています。説明も順序立てて説明されており完成度の高い参考書となっています。


詳解Go言語Webアプリケーション開発

こちらはGo言語の基礎知識を得たあとに読むことをすすめる本となっています。ハンズオン形式で手を動かしながら実装をしていくことができるため、実際の開発を意識しながらGo言語を学ぶことができます。

以下の記事では他にも筆者が実際に読んでおすすめしたい本をまとめています。


【Go入門】Golang基礎入門 + 各種ライブラリ + 簡単なTodoWebアプリケーション開発(Go言語)

まだGo言語の勉強を始めていない方、全くの初心者の方にはこちらのUdemy教材が最もおすすめです。

この教材ではgolangの基礎について網羅的に学ぶことができます。ただ見て学ぶだけでなく、講座の中でアプリ作成まで行うことで学んだことの理解をさらに深めることができます。


現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発

個人的に最も勉強になったのは「現役シリコンバレーエンジニアが教えるGo入門 + 応用でビットコインのシストレFintechアプリの開発」という教材です。
本格的なレクチャーに入る前に、なぜGoなのか、なぜFintechなのかについて説明されていることで、Goの概念や意味について大枠から理解することができます。

以下の記事では筆者が実際に受講したおすすめUdemy教材をまとめています。

※本ページではアフィリエイトリンク(PR)が含まれています


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?