Junior — Middle
Чӣ тавр андозаҳо ва ҳаҷмҳои захиравии қисмҳо дар забони барномасозӣ дар хотира нигоҳ дошта мешаванд?
sobes.tech AI
Ҷавоб аз AI
Go тилинде, кесим (slice) — бул үч негизги талааны камтыган структура:
- Массивге ишаретчи — кесимдин биринчи элементинин эсинде дареги.
- Узундук (len) — окууга жеткиликтүү элементтердин саны.
- Капаситет (cap) — жаңы эс тутум бөлбөстөн, кесимге сыйган максимум элементтердин саны.
Эстутумда, кесим болжол менен мындайча көрсөтүлөт:
type SliceHeader struct {
Data uintptr // массивге ишаретчи
Len int // кесимдин узундугу
Cap int // кесимдин капаситети
}
Кесим түзүүдө, белгилүү бир капаситет менен массив бөлүнөт. Эгер элементтер кошулганда узундук капаситеттен ашса, чоңураак өлчөмдө жаңы массив бөлүнүп, маалыматтар алга көчүрүлөт.
Резервделген капаситет (capacity) эс тутумду эффективдүү башкарууга мүмкүндүк берет, кесимдин өсүшү менен бөлүнүү санын азайтат.
Мисал:
s := make([]int, 3, 5) // узундук=3, капаситет=5
s = append(s, 4) // узундук=4, капаситет=5
s = append(s, 5) // узундук=5, капаситет=5
s = append(s, 6) // узундук=6, капаситет=10 (жаңы эс тутум бөлүнөт)
Ушул жол менен, кесимдердин өлчөмдөрү жана резервделген капаситеттери кесим структурасында сакталат жана автоматтык түрдө ишке ашырылуу учурунда башкарылат.