Sobes.tech
Junior — Middle

Qual é o resultado retornado pela função embutida len ao ser chamada numa string?

sobes.tech IA

Resposta da IA

No Go, a função incorporada len ao ser chamada numa string devolve o número de bytes nessa string, e não o número de caracteres (runas).

Isto deve-se ao facto de as strings em Go serem sequências de bytes codificadas em UTF-8. Se a string contiver apenas caracteres ASCII, então o número de bytes é igual ao número de caracteres. Mas se a string contiver caracteres multibyte (por exemplo, cirílicos, emojis), então len retornará a soma dos bytes, não o número de caracteres.

Exemplo:

s := "Привет"
fmt.Println(len(s)) // Mostrará o número de bytes, por exemplo 12

runes := []rune(s)
fmt.Println(len(runes)) // Mostrará o número de caracteres, por exemplo 6

Se precisar obter o número de caracteres (runas), deve converter a string numa fatia de runas e obter o seu comprimento.