Sobes.tech
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 ավտոմատ կերպով հատկացնում է հիշողություն նոր սլայսի համար՝ բավարար ծավալով՝ այդ տարրին պահելու համար։