यदि मैं यहजाओ: क्या मैं बहुत सारे मूल्य बना रहा हूं?
type myStruct struct {
mystring string
myint int
}
की तरह एक struct है और अगर मैं क्योंकि मैं पहली बार यह लौटने से पहले "एस" चर में संग्रहीत एक समारोह है कि इस
func New() myStruct {
s := myStruct{}
s.mystring = "string"
s.myint = 1
return s
}
की तरह एक नया myStruct देता है , क्या मेरा कार्य वास्तव में एक के बजाय 2 myStruct मान बना रहा है?
और यदि हां, तो क्या यह सुनिश्चित करने के लिए एक बेहतर अभ्यास है कि मैं इसे पहले चर में संग्रहीत नहीं करता हूं?
मुझे यकीन है कि नहीं कर रहा हूँ, लेकिन मुझे याद है वहाँ की तरह एक वाक्य रचना था 'समारोह नई() (रों MyStruct) {...} 'जो आपके लिए परिणाम आवंटन करेगा। यह तेज़ हो सकता है। क्या आप Google go या gccgo का उपयोग करते हैं? –
मैं Google go कमांड का उपयोग कर रहा हूं। मैं उत्सुक होगा अगर उस वाक्यविन्यास का एक ही प्रभाव होगा, या यदि यह किसी भी तरह से समस्या से बचाता है। –
स्वीकृत उत्तर देखें ... इसे 'func new() (mystruct) के रूप में परिभाषित करने से आपके कंपाइलर को आपके फ़ंक्शन बॉडी में प्रवेश करने से पहले आपके लिए संरचना आवंटित करने देगी। इसे जेडीआई के जवाब के समान ही काम करना चाहिए। फिर भी आप सुनिश्चित नहीं हो सकते हैं, क्योंकि चलने के चश्मा/कार्यान्वयन स्थायी रूप से बदल रहे हैं। –