Junior — Middle
შეგვიძლია თუ არა მნიშვნელობის ამოღება იმ რუკიდან, რომელიც ჯერ არ არის ინიციალიზებული?
sobes.tech AI
პასუხი AI-სგან
Go-ში, თუ რუკა (map) არ არის ინიციალიზებული (ანუ, თანაბარია nil-ს), მისი საშუალებით მნიშვნელობის მიღება კლავიშის მიხედვით არ გამოიწვევს პანიკას, არამედ უბრალოდ დააბრუნებს მნიშვნელობის ნულოვან მნიშვნელობას და ბულიან ფლაგს false, რაც მიუთითებს, რომ კლავიატი არ არსებობს.
მაგალითი:
var m map[string]int // m == nil
value, ok := m["key"]
fmt.Println(value, ok) // გამოიტანს: 0 false
თუმცა, თუ სცადეთ მნიშვნელობის დაწერა არინიციალიზებულ რუკაზე, მოხდება პანიკა:
m["key"] = 10 // პანიკა: დაწერა nil რუკაზე
ამიტომ, რუკის უსაფრთხოდ გამოყენებისთვის, მას უნდა მიეცეს ინიციალიზაცია, მაგალითად, make-ის გამოყენებით:
m = make(map[string]int)
m["key"] = 10 // ახლა სწორად მუშაობს