Junior — Middle
Go-ში სლაისთან მუშაობისას, თუ ის მკაფიოდ არ არის ინიციალიზებული, რა მოქმედებებია შესაძლებელი?
sobes.tech AI
პასუხი AI-სგან
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]