Junior — Middle
რის შემთხვევებში დაშვებულია Map-ში ჩაწერის ოპერაციის განხორციელება, რომელიც ჯერ არ არის ინიციალიზებული?
sobes.tech AI
პასუხი AI-სგან
Go ენაში, შეუძლებელია map-ში შეყვანის ოპერაციის განხორციელება, თუ ის არ არის ინიციალიზებული (ანუ, nil-ია), რადგან ეს გამოიწვევს შესრულების დროს პანიკას.
map-ის ინიციალიზაცია ხდება make ფუნქციის გამოყენებით:
m := make(map[string]int)
ms["key"] = 42 // სწორი
თუ map-ი nil-ია, დაწერის მცდელობა გამოიწვევს პანიკას:
var m map[string]int
m["key"] = 42 // პანიკა: მინიჭება `nil`-ის `map`-ში
გამონაკლისი:
- თუ
map-ი გამოაცხადეს, მაგრამ არ არის ინიციალიზებული, მას პირდაპირ შეიძლება ინიციალიზება ჩატარდეს წარუმატებლად. - ზოგჯერ,
map-ი ინიციალიზდება კონსტრუქტორში ან ფუნქციაში და შემდეგ გადაეცემა.
ამიტომ, ინიციალიზებული map-ში შეყვანა ნებადართულია მხოლოდ მისი პირდაპირი ინიციალიზაციის შემდეგ make-ით ან უკვე არსებული და ინიციალიზებული map-ის გადაცემის შემდეგ. წინააღმდეგ შემთხვევაში, ოპერაცია გამოიწვევს შესრულების დროს შეცდომას.