複数のパラメータを持つ構造体を並べ替える方法
Go では、構造体のスライスを並べ替えるときに、複数の並べ替えパラメータを考慮すると便利なことがよくあります。たとえば、メンバーを最初に姓で並べ替え、次に名前で並べ替えたい場合があります。
これを実現する 1 つの方法は、Go 1.22 で導入されたスライス.SortFunc 関数を使用することです。スライス.SortFunc を使用すると、カスタム比較関数を指定できます:
slices.SortFunc(members, func(a, b Member) int { return cmp.Or( cmp.Compare(a.LastName, b.LastName), cmp.Compare(a.FirstName, b.FirstName), ) })
ここでは、cmp.Or を使用して姓と名の両方の比較を適用します。 cmp.Compare は、等しい (0)、より大きい (1)、またはより小さい (-1) を示す整数を返します。
Go 1.8 以降で利用できる別のオプションは、sort.Slice または sort を使用することです。カスタムのless関数を使用して関数を並べ替えます:
sort.Sort(byLastFirst(members))
ここでは、Len、Swap、およびsort.Interface インターフェースのメソッドが減りました。 Less メソッドは、比較のために姓と名の両方をチェックします。
どのアプローチを選択するかは、使用している Go のバージョンと、特定のアプリケーションで提供される利便性によって異なります。ただし、並べ替えがパフォーマンスのボトルネックであることが判明しない限り、一般的には最も便利なアプローチが優先されます。
以上が複数のパラメータを使用して Go で構造体を並べ替える方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。