Sobes.tech
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 // ახლა სწორად მუშაობს