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.