Junior — Middle
Come è organizzata la struttura interna del tipo stringa nel linguaggio Go?
sobes.tech AI
Risposta dell'AI
Nel linguaggio Go, una stringa (string) è un tipo di dato immutabile che rappresenta una sequenza di byte codificati in UTF-8. Internamente, una stringa è implementata come una struttura con due campi:
- un puntatore a un array di byte (una slice di byte), dove viene memorizzato il contenuto della stringa;
- la lunghezza della stringa (il numero di byte).
Può essere rappresentato approssimativamente così:
// rappresentazione semplificata della struttura interna di string
type stringStruct struct {
ptr *byte // puntatore ai dati
len int // lunghezza in byte
}
A causa dell'immutabilità della stringa, ogni modifica crea una nuova copia dei dati. Questo garantisce sicurezza e semplicità nel lavorare con le stringhe, ma richiede attenzione nelle concatenazioni frequenti (è meglio usare strings.Builder).
È anche importante notare che la lunghezza viene memorizzata in byte, non in caratteri Unicode, quindi per lavorare con i caratteri bisogna usare il pacchetto unicode/utf8.