Sobes.tech
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-ის გადაცემის შემდეგ. წინააღმდეგ შემთხვევაში, ოპერაცია გამოიწვევს შესრულების დროს შეცდომას.