Junior — Middle
Como é organizada a estrutura interna do tipo string na linguagem Go?
sobes.tech IA
Resposta da IA
Na linguagem Go, uma string (string) é um tipo de dado imutável que representa uma sequência de bytes codificados em UTF-8. Internamente, uma string é implementada como uma estrutura com dois campos:
- um ponteiro para um array de bytes (uma fatia de bytes), onde o conteúdo da string é armazenado;
- o comprimento da string (o número de bytes).
Isto pode ser representado aproximadamente assim:
// representação simplificada da estrutura interna de string
type stringStruct struct {
ptr *byte // ponteiro para os dados
len int // comprimento em bytes
}
Devido à imutabilidade da string, ao modificá-la é criada uma nova cópia dos dados. Isso garante segurança e simplicidade ao trabalhar com strings, mas requer atenção em concatenações frequentes (é melhor usar strings.Builder).
Também é importante notar que o comprimento é armazenado em bytes, não em caracteres Unicode, portanto, para trabalhar com caracteres, deve-se usar o pacote unicode/utf8.