Sobes.tech
Junior — Middle

Программалоо тилинде кесимдердин өлчөмдөрү жана резервдик көлөмдөрү кантип сакталат?

sobes.tech AI

AIден жооп

Go тилинде, слайс (slice) — бул үч негизги талааны камтыган структура:

  1. Массивге ишаретчи — слайстын биринчи элементинин эсинде дареги.
  2. Узундук (len) — жеткиликтүү элементтердин саны.
  3. Капаситет (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 (жаңы эс тутум бөлүнөт)

Ушул жол менен, слайстардын өлчөмдөрү жана резервделген капаситеттери слайс структурасында сакталат жана автоматтык түрдө ишке ашырылуу учурунда башкарылат.