sort.Strings() を使用した Golang での大文字と小文字を区別しない並べ替え
Python では、大文字と小文字を区別しない並べ替えは、多くの場合、次のキー パラメーターを使用して実現されます。カスタム比較関数を可能にするsorted()関数。ただし、Go の sort.Strings() には、直接同等のものはありません。
Go で大文字と小文字を区別しない並べ替えを実行するには、Go の強力なスライス機能を活用できます。 1 つの方法は、文字列の小文字バージョンを比較するカスタム比較関数を作成することです。
<code class="go">sort.Strings(data, func(i, j int) bool { return strings.ToLower(data[i]) < strings.ToLower(data[j]) })</code>
この方法は小さなデータ セットにはうまく機能しますが、大きな入力に対して過剰な文字列割り当てが発生する可能性があります。
より効率的にソートするために、大文字と小文字を区別せずに文字列をルーンごとに比較できます。
<code class="go">func lessLower(sa, sb string) bool { for { rb, nb := utf8.DecodeRuneInString(sb) if nb == 0 { return false } ra, na := utf8.DecodeRuneInString(sa) if na == 0 { return true } rb = unicode.ToLower(rb) ra = unicode.ToLower(ra) if ra != rb { return ra < rb } sa = sa[na:] sb = sb[nb:] } } sort.Strings(data, func(i, j int) bool { return lessLower(data[i], data[j]) })</code>
このアプローチでは、文字列のルーンを直接比較することで、不必要な割り当てを回避します。
さらに柔軟性と言語固有の並べ替えを行うには、ロケールと言語固有の照合ルールを提供する Collate パッケージの使用を検討してください。
以上がsort.Strings() を使用して Go で大文字と小文字を区別しない並べ替えを実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。