Sobes.tech
Middle+

Ի՞նչ է բաղկացած սլայսից, ինչ է նրա ներքին կառուցվածքը։

sobes.tech AI

Պատասխան AI-ից

Go-ում, slice-ը կառուցվածք է, որը պարունակում է երեք հիմնական դաշտեր՝

  1. Արարատի ցուցիչ — ներքին զանգվածի առաջին տարրին հասցե:
  2. Երկարություն (len) — մատչելի տարրերի քանակը:
  3. Հզորություն (cap) — առավելագույն տարրերի քանակը, որոնք կարող են տեղավորվել ցուցիչից սկսած, առանց նոր հիշողություն հատկացնել:

Ներքին, slice-ը ոչ թե զանգված է, այլ պարզապես "պատուհան" զանգվածի մասի վրա: Երբ slice-ը փոխվում է (օրինակ, ավելացնելով տարրեր append-ով), և երկարությունը գերազանցում է հզորությունը, ստեղծվում է նոր զանգված և տվյալները պատճենվում են այնտեղ:

Սիմպլիֆիկացված slice կառուցվածքի օրինակ՝

type SliceHeader struct {
    Data uintptr // ցուցիչ առաջին տարրին
    Len  int     // slice-ի երկարությունը
    Cap  int     // slice-ի հզորությունը
}

Այսպիսով, արդյունավետ աշխատել հնարավոր է դինամիկ հաջորդականությունների հետ՝ առանց տվյալների կրկնօրինակման՝ կտրելու ժամանակ։