Middle+
Ի՞նչ է բաղկացած սլայսից, ինչ է նրա ներքին կառուցվածքը։
sobes.tech AI
Պատասխան AI-ից
Go-ում, slice-ը կառուցվածք է, որը պարունակում է երեք հիմնական դաշտեր՝
- Արարատի ցուցիչ — ներքին զանգվածի առաջին տարրին հասցե:
- Երկարություն (len) — մատչելի տարրերի քանակը:
- Հզորություն (cap) — առավելագույն տարրերի քանակը, որոնք կարող են տեղավորվել ցուցիչից սկսած, առանց նոր հիշողություն հատկացնել:
Ներքին, slice-ը ոչ թե զանգված է, այլ պարզապես "պատուհան" զանգվածի մասի վրա: Երբ slice-ը փոխվում է (օրինակ, ավելացնելով տարրեր append-ով), և երկարությունը գերազանցում է հզորությունը, ստեղծվում է նոր զանգված և տվյալները պատճենվում են այնտեղ:
Սիմպլիֆիկացված slice կառուցվածքի օրինակ՝
type SliceHeader struct {
Data uintptr // ցուցիչ առաջին տարրին
Len int // slice-ի երկարությունը
Cap int // slice-ի հզորությունը
}
Այսպիսով, արդյունավետ աշխատել հնարավոր է դինամիկ հաջորդականությունների հետ՝ առանց տվյալների կրկնօրինակման՝ կտրելու ժամանակ։