Junior — Middle
Cum este organizată structura internă a tipului string în limbajul Go?
sobes.tech AI
Răspuns de la AI
În limbajul Go, șirul (string) este un tip de date imuabil care reprezintă o secvență de octeți în codificarea UTF-8. Intern, un șir este implementat ca o structură cu două câmpuri:
- un pointer către un array de octeți (o felie de octeți), unde este stocat conținutul șirului;
- lungimea șirului (numărul de octeți).
Aceasta poate fi reprezentată aproximativ astfel:
// reprezentare simplificată a structurii interne a șirului
type stringStruct struct {
ptr *byte // pointer către date
len int // lungime în octeți
}
Din cauza imuabilității șirului, la modificare se creează o copie nouă a datelor. Acest lucru asigură siguranță și simplitate în lucrul cu șirurile, dar necesită atenție la concatenări frecvente (este mai bine să folosiți strings.Builder).
De asemenea, este important de reținut că lungimea este stocată în octeți, nu în caractere Unicode, așa că pentru lucrul cu caractere trebuie folosit pachetul unicode/utf8.