Sobes.tech
Junior — Middle

Чӣ гуна сохтори дохилии навъи сатр дар забони Go ташкил шудааст?

sobes.tech AI

Ҷавоб аз AI

Дар забони Go, сатр (string) навъе маълумоти ғайриқобили тағирёбанда аст, ки як пайдарпайи байтҳоро дар рамзи UTF-8 ифода мекунад. Дар дохили, сатр ҳамчун сохтор бо ду майдон татбиқ мешавад:

  • ишора ба массиви байтҳо (slice байтҳо), ки дар он мазмуни сатр нигоҳ дошта мешавад;
  • дарозии сатр (суммаи байтҳо).

Инро тақрибан чунин тасвир кардан мумкин аст:

// тасвиркунӣ осоншудаи сохтори дохилии сатр
type stringStruct struct {
    ptr *byte  // ишора ба маълумот
    len int    // дарозӣ дар байтҳо
}

Зеро, ки сатр тағирнопазир аст, дар вақти тағирот нусхаи нав аз маълумотҳо сохта мешавад. Ин бехатарӣ ва соддагиро таъмин мекунад, аммо диққатро дар вақти пайвасткунии зиёд талаб мекунад (strings.Builder беҳтар аст).

Ҳамчунин муҳим аст, ки дарозӣ дар байтҳо нигоҳ дошта мешавад, на дар аломатҳои Unicode, бинобар ин барои кор бо аломатҳо бояд аз бастаи unicode/utf8 истифода бурд.