Avatar ·

Go में खाली स्लाइस को इनिशियलाइज़ करने का सही तरीका: var बनाम make

सभी को नमस्ते! मैंने अभी-अभी Go सीखना शुरू किया है और खाली स्लाइस को इनिशियलाइज़ करने में भ्रम का सामना करना पड़ा। डॉक्यूमेंटेशन और उदाहरणों में मैं दो मुख्य तरीके देखता हूँ, लेकिन समझ नहीं पाता कि कौन सा सही है और किन स्थितियों में। पहला तरीका — वेरिएबल डिक्लेरेशन के माध्यम से: ```go var s []string ``` दूसरा — make फंक्शन के माध्यम से: ```go s := make([]string, 0) ``` मैंने पढ़ा है कि दोनों एक खाली स्लाइस बनाते हैं, लेकिन क्या इनमें कोई अंतर है? जब मैं `var s []string` का उपयोग करता हूँ, तो मैं `s == nil` जाँच सकता हूँ और `true` प्राप्त करता हूँ। जबकि `make([]string, 0)` का उपयोग करने पर — `false`। क्या इसका मतलब है कि एक तरीका दूसरे से बेहतर है? मुझे विशेष रूप से उस स्थिति की चिंता है जब मैं एक स्लाइस बनाता हूँ जो बाद में डेटा से भरा जाएगा, उदाहरण के लिए, JSON पार्स करते समय या फ़ाइल से लाइनें पढ़ते समय। मैं अनावश्यक मेमोरी एलोकेशन और सीरियलाइज़ेशन के दौरान nil-स्लाइस से होने वाली समस्याओं से बचना चाहता हूँ। कुछ भाषाओं में जो मैं जानता हूँ, खाली array और nil अलग-अलग चीज़ें हैं, और इससे अक्सर बग होते थे। कृपया बताएं कि इनिशियलाइज़ करने का कौन सा तरीका सही है।