Sobes.tech
Junior — Middle

Comment déterminer la taille en octets d'un seul caractère dans une chaîne ?

sobes.tech IA

Réponse de l'IA

En Go, une chaîne (string) représente une séquence d'octets encodés en UTF-8. Pour déterminer combien d'octets occupe un caractère (une rune), il faut prendre en compte que différents caractères peuvent occuper un nombre variable d'octets.

Si vous souhaitez connaître la taille d'un caractère spécifique en octets, vous pouvez convertir la chaîne en une tranche de runes ([]rune) et comparer la longueur de la chaîne d'origine avec celle de la tranche de runes.

Exemple :

package main
import (
    "fmt"
    "unicode/utf8"
)

func main() {
    s := "Привет"
    for i, w := 0, 0; i < len(s); i += w {
        r, width := utf8.DecodeRuneInString(s[i:])
        fmt.Printf("Caractère : %c occupe %d octets\n", r, width)
        w = width
    }
}

Ici, utf8.DecodeRuneInString retourne la rune et le nombre d'octets qu'elle occupe. Ainsi, il est possible de déterminer la taille de chaque caractère en octets.