Dev Study
Go コース

66. 並べ替え — sort と slices.Sort

スライスの並べ替えには2つの道があります。古くからある sort パッケージは sort.Ints・sort.Strings といった専用関数や、任意の条件で並べる sort.Slice(s, less) を提供します。sort.Slice は比較関数 less(i, j) が「i 番目が j 番目より前か」を返す形です。

Go 1.21 以降は、ジェネリクスを使った slices.Sort(順序型を昇順に)と slices.SortFunc(比較関数を渡す)が簡潔で型安全です。SortFunc の比較関数は負・0・正を返す形で、cmp.Compare を使うと書きやすくなります。安定ソートが必要なら SortStableFunc を使います。

下の例では数値を slices.Sort で昇順にし、構造体のスライスを slices.SortFunc で年齢順に並べます。並べ替えの結果は決まるので出力は安定します。

▶ サンプルコードを実行してみよう(自由に書き換えてOK)

Go
公式ドキュメントで詳しく ↗