Sobes.tech
Junior — Middle

Como determinar o tamanho em bytes de um único caractere numa string?

sobes.tech IA

Resposta da IA

Em Go, a string (string) representa uma sequência de bytes codificados em UTF-8. Para determinar quantos bytes ocupa um caractere (uma rune), é necessário considerar que diferentes caracteres podem ocupar diferentes quantidades de bytes.

Se precisar saber o tamanho de um caractere específico em bytes, pode converter a string para um slice de runas ([]rune) e comparar o comprimento da string original com o comprimento do slice de runas.

Exemplo:

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("Caractere: %c ocupa %d bytes\n", r, width)
        w = width
    }
}

Aqui, utf8.DecodeRuneInString retorna a rune e o número de bytes que ela ocupa. Assim, é possível determinar o tamanho de cada caractere em bytes.