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