Junior — Middle
Koje radnje su dozvoljene prilikom rada sa slice-om u Go ako on nije bio eksplicitno inicijalizovan?
sobes.tech АИ
Одговор од АИ
У Go, ако срез (slice) није експлицитно иницијализован (односно, има вредност nil), могу се извршити следеће радње:
- Провера да ли је
nil(на пример,if slice == nil), што је корисно за одређивање да ли је срез иницијализован. - Добијање дужине и капацитета помоћу
len(slice)иcap(slice). Заnil-срез, дужина и капацитет су 0. - Коришћење оператора
appendза додавање елемената.appendће аутоматски креирати нови срез са додељеном меморијом ако је оригинални срезnil.
Међутим, не може се приступити елементима среза по индексу ако је nil или празан, јер ће то изазвати паник.
Пример:
var s []int // s == nil
fmt.Println(s == nil) // true
fmt.Println(len(s)) // 0
s = append(s, 1) // сада је s иницијализован и садржи [1]