Rumah > Artikel > pembangunan bahagian belakang > Bagaimana untuk Mencapai Pengisihan Tidak Peka Huruf dalam Go dengan sort.Strings()?
Isih Tidak Peka huruf besar dalam Golang dengan isihan.Strings()
Dalam Python, pengisihan tidak peka huruf besar-besaran selalunya dicapai menggunakan parameter utama fungsi sorted(), yang membenarkan fungsi perbandingan tersuai. Walau bagaimanapun, dalam isihan Go.Strings(), tiada persamaan langsung.
Untuk melakukan pengisihan tidak peka huruf besar-kecil dalam Go, kami boleh memanfaatkan keupayaan penghirisan Go yang berkuasa. Satu pendekatan ialah mencipta fungsi perbandingan tersuai yang membandingkan versi huruf kecil rentetan:
<code class="go">sort.Strings(data, func(i, j int) bool { return strings.ToLower(data[i]) < strings.ToLower(data[j]) })</code>
Kaedah ini berfungsi dengan baik untuk set data kecil, tetapi ia boleh mengakibatkan peruntukan rentetan yang berlebihan untuk input yang besar.
Untuk pengisihan yang lebih cekap, kita boleh membandingkan rune rentetan demi rune sambil mengabaikan kesnya:
<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>
Pendekatan ini mengelakkan peruntukan yang tidak perlu dengan membandingkan terus rune rentetan.
Untuk fleksibiliti lanjut dan pengisihan khusus bahasa, pertimbangkan untuk menggunakan pakej penyusun, yang menyediakan tempat dan peraturan penyusunan khusus bahasa.
Atas ialah kandungan terperinci Bagaimana untuk Mencapai Pengisihan Tidak Peka Huruf dalam Go dengan sort.Strings()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!