Senior
სია და რუკა სად იქნება — გუბეში თუ სტეკზე?
sobes.tech AI
პასუხი AI-სგან
Go-ში მასივები ჩვეულებრივ სტეკზე განლაგებულია, თუ მათი ზომა კომპილაციის დროს არის ცნობილი და ისინი ძალიან დიდი არ არის. ეს დაკავშირებულია იმასთან, რომ მასივები ფიქსირებული ზომის მნიშვნელობებია. თუმცა, თუ მასივი გადაეცემა მაჩვენებლის სახით ან გამოიყენება სტრუქტურაში, რომელიც განაწილებულია heap-ზე, მაშინ მასივი ასევე იქნება heap-ზე.
Map-ი Go-ში არის მიმთითებლის ტიპი, რომელიც შიგნიდან რეალიზებულია მაჩვენებლით heap-ზე მონაცემთა სტრუქტურაზე. ამიტომ, map ყოველთვის მდებარეობს heap-ზე, მიუხედავად იმისა, რომ ცვლადი map ადგილობრივად არის გამოცხადებული.
მაგალითი:
ფუნქცია მაგალითი() {
var arr [10]int // სტეკზე მასივი
m := make(map[int]int) // heap-ზე map
_ = arr
_ = m
}