Sobes.tech
Junior — Middle

Quel résultat la fonction intégrée len renvoie-t-elle lorsqu'elle est appelée sur une chaîne ?

sobes.tech IA

Réponse de l'IA

En Go, la fonction intégrée len lorsqu'elle est appelée sur une chaîne retourne le nombre d'octets dans cette chaîne, et non le nombre de caractères (runes).

Cela est dû au fait que les chaînes en Go sont des séquences d'octets encodées en UTF-8. Si la chaîne ne contient que des caractères ASCII, alors le nombre d'octets est égal au nombre de caractères. Mais si la chaîne contient des caractères multibyte (par exemple, cyrilliques, emojis), alors len renverra la somme des octets, pas le nombre de caractères.

Exemple:

s := "Привет"
fmt.Println(len(s)) // Affichera le nombre d'octets, par exemple 12

runes := []rune(s)
fmt.Println(len(runes)) // Affichera le nombre de caractères, par exemple 6

Si vous souhaitez obtenir le nombre de caractères (runes), il faut convertir la chaîne en un slice de runes et prendre sa longueur.