Junior — Middle
Jak je organizována vnitřní struktura řetězového typu v jazyce Go?
sobes.tech AI
Odpověď od AI
V jazyce Go je řetězec (string) nemměnitelný datový typ, který představuje posloupnost bajtů v kódování UTF-8. Interně je řetězec implementován jako struktura se dvěma poli:
- ukazatel na pole bajtů (slice bajtů), kde je uložen obsah řetězce;
- délka řetězce (počet bajtů).
To lze přibližně představit takto:
// zjednodušené zobrazení vnitřní struktury řetězce
type stringStruct struct {
ptr *byte // ukazatel na data
len int // délka v bajtech
}
Kvůli neměnitelnosti řetězce při změnách je vytvářena nová kopie dat. To zajišťuje bezpečnost a jednoduchost práce s řetězci, ale vyžaduje pozornost při častých spojování (je lepší používat strings.Builder).
Také je důležité, že délka je uložena v bajtech, nikoliv v Unicode znacích, proto je při práci se znaky nutné používat balíček unicode/utf8.