2015-12-24 6 views
16

मैं गो भाषा में नया हूं, और सी/सी ++ में केवल न्यूनतम पृष्ठभूमि है, इसलिए स्वाभाविक रूप से मैं पॉइंटर्स का उपयोग कब और पॉइंटर्स का उपयोग नहीं करने के विचार से संघर्ष कर रहा हूं। यद्यपि इस प्रश्न को ओपन-एंड माना जा सकता है, लेकिन मैं सोच रहा हूं कि structs को कब वापस करना है और पॉइंटर्स वापस कब करना है, (और समान रूप से जब structs/पॉइंटर्स को तर्क के रूप में स्वीकार करना है) पर कुछ दिशानिर्देश क्या हैं।गोलांग: पॉइंटर्स का उपयोग कब करें

मैं क्या अनुमान लगा सकते हैं से, निम्न विवरण सही पकड़:

  1. structs मूल्य द्वारा कार्यों में पारित कर दिया गया है। यही है, एक समारोह में इसे पारित करते समय संरचना की एक प्रति बनाई जाती है।
  2. यदि मैं संदर्भ द्वारा संरचना को पास करना चाहता हूं, तो मैं फ़ंक्शन परिभाषा में एक पॉइंटर तर्क का उपयोग करता हूं, और फ़ंक्शन को कॉल करते समय ऑपरेटर के पते का उपयोग करता हूं।
  3. कारण मैं संदर्भ द्वारा संरचना में पारित करना चाहता हूं क्योंकि या तो जिस संरचना में मैं गुजर रहा हूं वह बड़ा है, और यह मूल्य (असंभव) द्वारा इसे पास करने के लिए स्मृति पर कर लगाएगा या यदि मैं बनाना चाहता हूं उस प्रतिलिपि में परिवर्तन जो मैं गुजर रहा हूं (अधिक संभावना है)।
  4. एक अनुशासनिक के रूप में 3.), मुझे मूल्य से गुजरना चाहिए जब तक कि मेरे पास संदर्भ से पारित होने के कारणों में से एक नहीं है।

क्या मेरी धारणाएं सही हैं? या क्या मुझे पॉइंटर्स पर निशान याद आ रहा है?

+1

यह मूल रूप से यह है - मुझे यकीन नहीं है कि आप हाँ से अधिक पूछ रहे हैं या कोई सवाल नहीं है। पुन: # 2, यह याद रखना अच्छा है कि * सब कुछ * गो में मूल्य से गुजरता है, और इस मामले में आप मूल्य के आधार पर एक सूचक को पारित करेंगे। – JimB

+0

यह अनिवार्य रूप से एक हां/नहीं सवाल है, लेकिन यदि यह कोई नहीं था तो मैं जानना चाहता था कि क्या गलत था। आपके सहयोग के लिए धन्यवाद। 2 के लिए, यह कहना सही है कि सूचक मूल्य से गुजरता है, लेकिन हम उस पॉइंटर का उपयोग उस ऑब्जेक्ट को संशोधित करने के लिए करते हैं, जो कि इंगित करता है, लेकिन यदि हम एक स्ट्रक्चर (उस संरचना के सूचक के बजाय) में पास करते हैं, तो हम केवल प्रतिलिपि को संशोधित करने में सक्षम होंगे? –

+1

हाँ, आप सही हैं –

उत्तर

11

आपकी धारणाएं सही हैं। लगभग # 3, गो समवर्ती भाषा है और goroutines में संदर्भ द्वारा गुजरती है, उन्हें सभी एक ही संरचना को पढ़ते हैं जो सुरक्षित है, लेकिन उन्हें एक ही संरचना को संशोधित करने के लिए भी खतरनाक है।

संबंधित मुद्दे