ホームページ >バックエンド開発 >Golang >複数のパラメータを使用して Go で構造体を並べ替える方法は?

複数のパラメータを使用して Go で構造体を並べ替える方法は?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-11 10:03:17161ブラウズ

How to Sort Structs in Go Using Multiple Parameters?

複数のパラメータを持つ構造体を並べ替える方法

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。