गोलांग में, ऐसा लगता है कि कोई रचनाकार नहीं हैं, लेकिन यह सुझाव दिया जाता है कि आप एक फ़ंक्शन का उपयोग करके एक स्ट्रक्चर प्रकार का ऑब्जेक्ट आवंटित करते हैं, जिसे आम तौर पर "नया" + टाइपनाम द्वारा नामित किया जाता है, उदाहरण के लिएसीओ ++/सी
func NewRect(x,y, width, height float) *Rect {
return &Rect(x,y,width, height)
}
हालांकि, मुझे गो के मेमोरी लेआउट के बारे में निश्चित नहीं है। सी/सी ++ में, इस प्रकार का कोड का मतलब है कि आप एक पॉइंटर लौटाते हैं, जो अस्थायी ऑब्जेक्ट को इंगित करता है क्योंकि चर को स्टैक पर आवंटित किया जाता है, और फ़ंक्शन रिटर्न के बाद चर कुछ ट्रैश हो सकता है। गोलांग में, क्या मुझे ऐसी चीज चिंता करने की ज़रूरत है? क्योंकि ऐसा लगता है कि कोई मानक दिखाता है कि ढेर पर किस तरह का डेटा आवंटित किया जाएगा, इस प्रकार किस प्रकार का डेटा आवंटित किया जाएगा।
जावा में, ऐसा लगता है कि मूल प्रकार जैसे int, float को स्टैक पर आवंटित किया जाएगा, ऑब्जेक्ट से व्युत्पन्न अन्य ऑब्जेक्ट ढेर पर आवंटित किया जाएगा। गोलांग में, क्या इस बारे में एक विशिष्ट बात है?
इसे ढेर पर आवंटित किया जाएगा। गो कंपाइलर यह पता लगा सकता है कि जब कोई ऑब्जेक्ट स्टैक के बाहर रहता है, और स्वचालित रूप से इसे ढेर पर आवंटित करता है। ऑप्टिमाइज़ेशन फैसले देखने के लिए आप 'go build -gcflags' -m'' के साथ संकलित करते हैं, तो आप इसे देख सकते हैं। – siritinga
@python: आपका अंतर्ज्ञान सही था कि आपको इसके बारे में चिंता करने की ज़रूरत नहीं है। व्यवहार में यह सच है कि इसे ढेर पर आवंटित किया जाएगा, लेकिन गो का मेमोरी मॉडल बहुत आसान है, और आपको वास्तव में ढेर और ढेर के बारे में सोचना नहीं है। आप चर के बारे में सोच सकते हैं। यदि आप किसी चीज़ का पता लेते हैं, तो गो गारंटी देगा कि वह पता तब तक मान्य रहता है जब तक आपके पास कोई पॉइंटर न हो। यह प्रोग्रामर के रूप में आपके लिए कोई फर्क नहीं पड़ता कि यह कैसे होता है। (हालांकि, जाहिर है, यह सोचने के लिए दिलचस्प हो सकता है कि यह कैसे कार्यान्वित किया गया है, और वहां कुछ अच्छी चीजें भी चल रही हैं) – joshlf
आपके सभी लोगों के लिए धन्यवाद – python