Sobes.tech
Middle

Ինչպես է աճում սլայսի ծավալը ընդլայնման ժամանակ?

sobes.tech AI

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

Go-ում, սլայսը (slice) ունի ներքին կարողություն (capacity), որը մեծանում է ընդլայնման ժամանակ: Երբ ավելացվում է տարր և ընթացիկ կարողությունը բավարար չէ, սլայսը հատկացնում է նոր զանգված մեծացված կարողությամբ, սովորաբար մոտ երկու անգամ ավելի մեծ, որպեսզի նվազեցնի հատկացման քանակը:

Օրինակ, եթե սլայսի capacity=4, հինգերորդ տարր ավելացնելիս ստեղծվում է նոր զանգված capacity=8, և տվյալները պատճենվում են այնտեղ: Այս ամորտիզացված աճը արդյունավետ կերպով կառավարում է հիշողությունը և կատարողականությունը:

Օրինակ՝

s := make([]int, 0, 4)
for i := 0; i < 10; i++ {
    s = append(s, i)
    fmt.Printf("len=%d cap=%d\n", len(s), cap(s))
}

Ելքը ցույց կտա, թե ինչպես է capacity-ը մոտավորապես կրկնապատկվում անհրաժեշտության դեպքում։