Sobes.tech
Junior — Middle

Ҳангоми кор бо слайс дар Go, агар он ба таври равшан оғоз наёфта бошад, кадом амалҳо иҷозат дода мешаванд?

sobes.tech AI

Ҷавоб аз AI

Дар Go, агар слайс (slice) баъзан explicitly initialized нашуда бошад (яъне, дорои арзиши nil бошад), метавон амалҳои зеринро иҷро кард:

  • Санҷед, ки оё nil аст (масалан, if slice == nil), ки барои муайян кардани он, ки слайс инициализатсия шудааст ё не, кӯмак мекунад.
  • Дарозӣ ва иқтидори онро бо len(slice) ва cap(slice) ба даст оред. Барои nil-слайс, дарозӣ ва иқтидор 0 мебошанд.
  • Оператор append-ро барои илова кардани элементҳо истифода баред. append автоматӣ як слайс нав бо ёдгирии ёрирасон эҷод мекунад, агар слайс оригиналӣ nil бошад.

Бо вуҷуди ин, ба элементҳои слайс бо индекс дастрасӣ кардан мумкин нест, агар он nil ё холӣ бошад, зеро ин паника (panic) ба вуҷуд меорад.

Масалан:

var s []int // s == nil
fmt.Println(s == nil) // true
fmt.Println(len(s))   // 0
s = append(s, 1)      // ҳоло s инициализатсия шудааст ва дорои [1] аст