Sobes.tech
Senior

რა არის სლაისი? რა არის სლაისის ქვეშ? როგორ მუშაობს append ფუნქცია?

sobes.tech AI

პასუხი AI-სგან

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

  • Массивге ишара (жерде турган массив)
  • Узундук (len) — слайста жеткиликтүү элементтердин саны
  • Капаситет (cap) — ишарадан баштап, негизги массивтин эң көп сандаган элементтерди камтый алчу көлөмү

Карап турганда, слайс — бул кичинекей структура, болжол менен мындай:

type sliceHeader struct {
    Data uintptr // биринчи элементке ишара
    Len  int
    Cap  int
}

append функциясы слайсга элементтер кошот. Эгер слайстын узундугу капаситеттен кичине болсо, append жөн эле жаңы элементтерди негизги массивге жазып, узундугун көбөйтөт. Эгер узундук капаситетке жетсе, append жаңы, көбүрөөк капаситет менен массив бөлүп, эски элементтерди көчүрүп, жаңы элементтерди кошуп, жаңыланган ишара менен жаңы слайс кайтарат.

Мисал:

s := []int{1, 2, 3}
s = append(s, 4) // cap(s) > len(s) болсо, жөн эле 4 кошот

// cap(s) == len(s) болсо, жаңы массив бөлүп, [1,2,3], 4 кошот

Мындай жол менен, append жаңы слайс кайтаруусу мүмкүн, жана натыйжаны кайра белгилөө маанилүү.