ホームページ > バックエンド開発 > Golang > Go で構造体の配列を効率的にソートするにはどうすればよいですか?

Go で構造体の配列を効率的にソートするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-12-30 09:12:12
オリジナル
462 人が閲覧しました

How Can I Efficiently Sort Arrays of Structs in Go?

Go でのエレガントな配列のソート

構造体の配列を扱う場合、ソートは重要になります。 Go では、Go 1.8 で導入された sort.Slice 関数を活用して、これを簡単に実現できます。

例:

Planet 構造体の配列を考えてみましょう:

type Planet struct {
    Name       string
    Aphelion   float64
    Perihelion float64
    Axis       int64
    Radius     float64
}
ログイン後にコピー

並べ替え順Axis:

この配列を Axis フィールドで並べ替えるには、次のコードを使用できます:

sort.Slice(planets, func(i, j int) bool {
  return planets[i].Axis < planets[j].Axis
})
ログイン後にコピー

この関数は最初の引数としてスライスを受け取り、比較関数を次のように受け取ります。 2 番目の引数。比較関数は、要素をどのように並べ替えるかを決定します。この場合、インデックス i の軸の値がインデックス j の軸の値より小さい場合、比較関数は true を返します。これは、i の要素が j の要素より前に並べ替えられる必要があることを示します。

配列に関する注意点:

配列を扱う場合、sort.Slice を使用する前に配列をスライスに変換する必要があります。これは、配列は固定サイズであり、スライスとは異なり、動的にサイズを変更できないためです。

sort.Slice(planets[:], func(i, j int) bool {
  return planets[i].Axis < planets[j].Axis
})
ログイン後にコピー

[:] 構文をスライスに追加することで、配列をオーバーレイするスライスを効果的に作成することになります。これにより、スライスを通じて配列を変更できるようになります。

このエレガントで簡単なアプローチにより、Go での配列の並べ替えが簡素化され、Python の対応物 (sorted(planets, key=lambda n: n.Axis) と同じくらい単純になります) ) も同じ結果が得られます。

以上がGo で構造体の配列を効率的にソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート