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 // ახლა მუშაობს