Sobes.tech
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.