Tri insensible à la casse à l'aide de sort.Strings() dans Go
Pour le tri insensible à la casse des listes de chaînes dans Go, envisagez d'utiliser le tri. Slice(), qui offre une plus grande flexibilité que sort.Strings().
Fonction personnalisée pour une comparaison insensible à la casse
Vous pouvez transmettre une fonction personnalisée à sort.Slice () pour effectuer des comparaisons insensibles à la casse. La fonction suivante convertit les chaînes en minuscules avant de les comparer :
<code class="go">func lowercaseCompare(s1, s2 string) bool { return strings.ToLower(s1) < strings.ToLower(s2) }</code>
Application de la fonction personnalisée
Pour trier les données de la liste sans tenir compte de la casse à l'aide de la fonction personnalisée :
<code class="go">sort.Slice(data, lowercaseCompare)</code>
Exemple
Considérez les données de la liste de chaînes := []string{"A", "b", "D", "c"}. Le trier sans tenir compte de la casse à l'aide de la fonction personnalisée produit le résultat ["A", "b", "c", "D"].
Tri efficace sans tenir compte de la casse
L'approche ci-dessus alloue deux nouvelles chaînes pour chaque comparaison. Pour les grandes listes de chaînes, cela peut s'avérer inefficace. Pour améliorer les performances, envisagez une comparaison rune par rune :
<code class="go">func runeCompare(a, b string) bool { for { r1, s1 := utf8.DecodeRuneInString(a) r2, s2 := utf8.DecodeRuneInString(b) if r1 == utf8.RuneError || r1 == r2 { return s1 < s2 } a = a[s1:] b = b[s2:] } }</code>
Tri efficace avec runeCompare()
Pour trier les données efficacement :
<code class="go">sort.Slice(data, runeCompare)</code>
Solution alternative : package collate
Pour un tri spécifique à une langue ou à une culture, envisagez d'utiliser le package collate. Il fournit des capacités de tri adaptées aux paramètres régionaux.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!