Sobes.tech
Junior — Middle

Hogyan van szervezve a string típus belső szerkezete a Go nyelvben?

sobes.tech MI

Válasz az MI-től

A Go nyelvben a string egy változatlan típus, amely egy UTF-8 kódolású bájtokból álló szekvenciát reprezentál. Belsőleg egy stringet két mezővel rendelkező struktúraként valósítanak meg:

  • egy mutató egy bájtokból álló tömbre (slice), ahol a string tartalma tárolódik;
  • a string hossza (a bájtok száma).

Ez nagyjából így ábrázolható:

// egyszerűsített ábrázolás a string belső struktúrájáról
type stringStruct struct {
    ptr *byte  // mutató az adatokra
    len int    // hossz byte-okban
}

A string változtathatatlansága miatt, módosításkor új másolat készül az adatokról. Ez biztonságot és egyszerűséget nyújt a stringek kezelésében, de figyelmet igényel gyakori összefűzéseknél (jobb a strings.Builder használata).

Fontos megjegyezni, hogy a hossz értéke bájtokban van tárolva, nem Unicode karakterekben, ezért a karakterek kezeléséhez a unicode/utf8 csomagot kell használni.