Uma string é uma sequencia imutavel de bytes.
As strings são convencionalmente interpretadas como sequencias de pontos de código Unicode (runas
) codificadas em UTF-8.
A função len
devolve o número de bytes não de runas
O iésimo byte de uma string não corresponde diretamente ao iésimo caracter, pois a codificação UTF-8
de um ponto de código que não seja ASCII exige mais.
Como strings são imutáveis, operações que tentam modificar os dados de uma string in-place não são permitidas
Em golang um unicode é representado como uma runa
. Com a versão 8 capaz de representar mais de 120 mil caracteres.
O tipo natural para armazenar uma única runa é int32
Com isso podemos representar uma sequência de runas com uma sequência de valores int32
.
Essa representação se chama UTF-32 ou USC-4
Cada ponto de codígo Unicode tem 32 bits
Ocupa mais espaço que ASCII, que exige apenas 8 bits
O UTF-8 é uma codificação de tamanho varíavel de pontos de código unicode na forma de bytes. Esse padrão usa entre um e 4 bytes Os bits de alta ordem no primeiro byte da runa indicam quantos bytes existem na sequencia
UTF-8 é a codificação preferida para strings de texto manipulados em GO A ordem lexicográfica dos bytes é igual a ordem dos pontos de código Unicode
O loop range
quando aplicado a uma string ja executa a decodificacao implicitamente e