Junior — Middle
Ինչքան տարրեր և ինչ ծավալ կունենա սլայսը մի տարր ավելացնելուց հետո, եթե սկզբում այն չի եղել ինիցիալիզացված?
sobes.tech AI
Պատասխան AI-ից
Եթե Go-ում սլայսը սկզբում չի ինիցիալիզացվել (այսինքն, հավասար է nil-ի), և դուք ավելացնում եք նրան մեկ տարր append ֆունկցիայի միջոցով, ապա՝
- Ավելացման հետո տարրերի քանակը (len) կլինի 1:
- Հավաքածուի ծավալը (cap) կախված է իրականացմանից, բայց սովորաբար սկսում է փոքր ծավալից, օրինակ՝ 1 կամ 2:
Օրինակ՝
var s []int // nil-սլայս
s = append(s, 10)
fmt.Println(len(s)) // 1
fmt.Println(cap(s)) // սովորաբար >= 1
Այսպիսով, երբ առաջին տարրն ավելացվում է nil-սլայսին Go-ում, Go ավտոմատ կերպով հատկացնում է հիշողություն նոր սլայսի համար՝ բավարար ծավալով՝ այդ տարրին պահելու համար։