Junior — Middle
Kako je organizovana interna struktura string tipa u jeziku Go?
sobes.tech АИ
Одговор од АИ
U jeziku Go, niz (string) je nepromenljiv tip podataka koji predstavlja sekvencu bajtova u kodiranju UTF-8. Interno, niz je implementiran kao struktura sa dva polja:
- pokazivač na niz bajtova (slice bajtova), gde se čuva sadržaj niza;
- dužina niza (broj bajtova).
Ovo se može približno predstaviti ovako:
// pojednostavljeno predstavljanje interne strukture niza
type stringStruct struct {
ptr *byte // pokazivač na podatke
len int // dužina u bajtovima
}
Zbog nepromenljivosti niza, pri promenama se kreira nova kopija podataka. Ovo obezbeđuje sigurnost i jednostavnost rada sa nizovima, ali zahteva pažnju kod čestih konkatenacija (bolje je koristiti strings.Builder).
Takođe je važno napomenuti da se dužina čuva u bajtovima, a ne u Unicode karakterima, pa je za rad sa karakterima potrebno koristiti paket unicode/utf8.