Go · Intermediário · Português · Técnico
string imutável
Em Go, uma string é uma sequência imutável de bytes, normalmente em UTF-8. Não se altera um byte no lugar; qualquer modificação cria uma nova string.
Onde usar
len(s) conta bytes, não caracteres, e s[i] devolve um byte. Para texto com acentos, converta para []rune ou use range, que decodifica runes.
Em código
s := "olá"
fmt.Println(len(s)) // 4 bytes
fmt.Println(len([]rune(s))) // 3 runes
// s[0] = 'O' não compilaExemplos
Não dá para alterar um caractere, a string é imutável em Go.
O len da string deu 4 para três letras porque o á ocupa dois bytes.
Cuidado
Não espere que s[0] = 'a' compile: strings não aceitam atribuição por índice; converta para []byte ou []rune.
Antônimos
slice de bytes