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.