複数のパラメータを持つ構造体の並べ替え
質問:
構造体の配列はどのように構成できますか?複数のパラメータ、具体的には姓、名の順に並べ替えます。 Go?
答え:
Go で複数のパラメーターを持つ構造体を並べ替える方法はいくつかあります。
スライスを使用した Go 1.22。SortFunc
Go の最新バージョン (1.22 および後で) は、slices.SortFunc:
slices.SortFunc(members, func(a, b Member) int { return cmp.Or( cmp.Compare(a.LastName, b.LastName), cmp.Compare(a.FirstName, b.FirstName), ) })
sort.Slice または sort.Sort Functions
を使用した簡潔な解決策を提供します。以前のバージョンの Go では、sort の使用を検討してください。スライスまたはソート。ソート。どちらも、必要なパラメーターに基づいて順序を決定するカスタム Less 関数が必要です。
sort.Slice を使用:
sort.Slice(members, func(i, j int) bool { if members[i].LastName != members[j].LastName { return members[i].LastName < members[j].LastName } return members[i].FirstName < members[j].FirstName })
sort.Sort を使用:
sort.Interface インターフェイスを実装するカスタム タイプを作成し、Len を定義します。 Swap メソッドと Less メソッド。
type byLastFirst []Member func (members byLastFirst) Len() int { return len(members) } func (members byLastFirst) Swap(i, j int) { members[i], members[j] = members[j], members[i] } func (members byLastFirst) Less(i, j int) bool { if members[i].LastName != members[j].LastName { return members[i].LastName < members[j].LastName } return members[i].FirstName < members[j].FirstName } sort.Sort(byLastFirst(members))
パフォーマンスに関する考慮事項:
これらのアプローチは構造体を並べ替えるさまざまな方法を提供しますが、ホット スポットを最適化するにはパフォーマンス分析が重要です。アプリケーションの要件に最も適したアプローチを選択してください。
以上がGoで複数のパラメータによって構造体を並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。