Golang 中使用sort.Strings() 進行不區分大小寫的排序
在Python 中,不區分大小寫的排序通常使用下列關鍵參數來實作Sorted() 函數,允許自訂比較函數。然而,在 Go 的 sort.Strings() 中,沒有直接等效的方法。
要在 Go 中執行不區分大小寫的排序,我們可以利用 Go 強大的切片功能。一種方法是建立一個自訂比較函數來比較字串的小寫版本:
<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 包,它提供了區域設定和特定於語言的排序規則。
以上是如何在 Go 中使用 sort.Strings() 實作不區分大小寫的排序?的詳細內容。更多資訊請關注PHP中文網其他相關文章!