Sobes.tech
Junior — Middle

რისი შეიძლება გაკეთდეს Map ტიპის ცვლადთან, რომელიც ჯერ არ არის ინიციალიზებული?

sobes.tech AI

პასუხი AI-სგან

Go ენისა, map ტიპის ცვლადი საწყისად იღებს მნიშვნელობას nil, თუ ის არ არის ინიციალიზებული.

nil მეპით დაშვებულია შემდეგი მოქმედებები:

  • მნიშვნელობის წაკითხვა გასაღებით — დააბრუნებს მნიშვნელობის ნულოვან მნიშვნელობას და ნიშნულს, რომ გასაღები არ არსებობს.
  • გასაღების არსებობის შემოწმება value, ok := map[key] გამოყენებით.

არასაშუალო ოპერაციები:

  • დაწერა (მნიშვნელობის მინიჭება გასაღებს) გამოიწვევს panic-ს.
  • ფუნქციების გამოძახება, რომლებიც ცვლის რუკას (მაგალითად, delete) nil რუკაზე უსაფრთხოა და არ გამოიწვევს panic-ს.

მაგალითი:

var m map[string]int // m == nil

v, ok := m["key"] // ok == false, v == 0

// m["key"] = 10 // panic: მინიჭება `nil` რუკას

delete(m, "key") // უსაფრთხოა, არაფერს აკეთებს

რუკის გამოყენება დასაწერად, მას უნდა ჩაეტარებინათ ინიციალიზაცია, მაგალითად, make-ის გამოყენებით:

m = make(map[string]int)
m["key"] = 10 // ახლა მუშაობს