Sobes.tech
Junior — Middle

Ako je organizovaná vnútorná štruktúra typu string v jazyku Go?

sobes.tech AI

Odpoveď od AI

V jazyku Go je reťazec (string) nemenný dátový typ, ktorý predstavuje sekvenciu bajtov v kódovaní UTF-8. Interné je reťazec implementovaný ako štruktúra so dvoma poľami:

  • ukazovateľ na pole bajtov (slice bajtov), kde je uložený obsah reťazca;
  • dĺžka reťazca (počet bajtov).

Toto možno približne predstaviť takto:

// zjednodušené zobrazenie vnútornej štruktúry reťazca
type stringStruct struct {
    ptr *byte  // ukazovateľ na dáta
    len int    // dĺžka v bajtoch
}

Kvôli nemennosti reťazca pri zmenách sa vytvára nová kópia dát. To zabezpečuje bezpečnosť a jednoduchosť práce s reťazcami, ale vyžaduje pozornosť pri častých spojeniach (je lepšie používať strings.Builder).

Tiež je dôležité, že dĺžka je uložená v bajtoch, nie v Unicode znakoch, preto pri práci so znakmi je potrebné používať balík unicode/utf8.