यह एक पुराना सवाल है, लेकिन यहाँ मेरे दो सेंट हैं। पीटरो का जवाब थोड़ा अधिक संक्षिप्त है, लेकिन थोड़ा कम कुशल है। आप पहले से ही जानते हैं कि यह कितना बड़ा होने जा रहा है इसलिए आपको एपेंड का उपयोग करने की आवश्यकता नहीं है:
keys := make([]int, len(mymap))
i := 0
for k := range mymap {
keys[i] = k
i++
}
ज्यादातर स्थितियों में शायद इससे बहुत फर्क नहीं पड़ेगा, लेकिन यह बहुत अधिक काम नहीं है, और मेरे परीक्षणों में (1,000,000 यादृच्छिक int64
कुंजी के साथ मानचित्र का उपयोग करना और फिर प्रत्येक विधि के साथ दस बार कुंजियों का सरणी उत्पन्न करना), यह लगभग था एपेंड का उपयोग करने की तुलना में सीधे सरणी के सदस्यों को आवंटित करने के लिए 20% तेज।
यद्यपि क्षमता स्थापित करने से वास्तविकताओं का सफाया हो जाता है, फिर भी प्रत्येक परिशिष्ट पर क्षमता तक पहुँचने के लिए अपेंड को अतिरिक्त कार्य करना पड़ता है।