Go でのカスタム フィールド名による構造体の配列の並べ替え
Go では、特定のフィールドによる構造体の配列の並べ替えは複雑になる場合があります特にカスタムキーが必要な場合。ただし、Go 1.8 での sort.Slice の導入により、このプロセスは大幅に簡単になりました。
それぞれに名前、遠日点、近日点、軸、半径などのプロパティが含まれる Planet 構造体の配列を考えてみましょう。これらの惑星を軸の値で並べ替えるには、sort.Slice 関数を利用できます。
package main import ( "log" "sort" ) type Planet struct { Name string Aphelion float64 Perihelion float64 Axis int64 Radius float64 } func main() { mars := &Planet{ Name: "Mars", Aphelion: 249.2, Perihelion: 206.7, Axis: 227939100, Radius: 3389.5, } earth := &Planet{ Name: "Earth", Aphelion: 151.930, Perihelion: 147.095, Axis: 149598261, Radius: 6371.0, } venus := &Planet{ Name: "Venus", Aphelion: 108.939, Perihelion: 107.477, Axis: 108208000, Radius: 6051.8, } planets := [...]Planet{*mars, *venus, *earth} log.Println("Original order:", planets) sort.Slice(planets[:], func(i, j int) bool { return planets[i].Axis < planets[j].Axis }) log.Println("Order after sorting by axis:", planets) }
この例では、sort.Slice 関数は引数として惑星配列のスライスと比較関数を受け取ります。 。比較関数によって並べ替え順序が決まります。この場合、比較関数は、i 番目の要素の軸の値が j 番目の要素の軸の値より小さいかどうかをチェックします。
ソート操作により、惑星配列が適切に変更されるため、ソート操作は必要ありません。
sort.Slice が元の配列を変更することに注意することが重要です。新しい並べ替えられたスライスが必要な場合は、並べ替え前に元のスライスのコピーを明示的に作成できます。
以上が「sort.Slice」を使用してカスタムフィールドでGo構造体をソートする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。