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 サイトの他の関連記事を参照してください。