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