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] аст