"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > मेरा गो रेंज लूप सरणी तत्वों को संशोधित क्यों नहीं करता है?

मेरा गो रेंज लूप सरणी तत्वों को संशोधित क्यों नहीं करता है?

2025-02-04 को प्रकाशित
ब्राउज़ करें:392

] । यह अप्रत्याशित व्यवहार को जन्म दे सकता है, जैसा कि निम्नलिखित गो कोड में देखा गया है:

Why Does My Go Range Loop Not Modify Array Elements?
आयात "fmt" टाइप मायटाइप स्ट्रक्चर { फ़ील्ड स्ट्रिंग } func मुख्य () { var सरणी [10] MyType के लिए _, ई: = रेंज सरणी { ई.फ़ील्ड = "फू" } के लिए _, ई: = रेंज सरणी { fmt.println (E.field) fmt.println ("-") } }

इस उदाहरण में, इरादा सरणी में प्रत्येक तत्व के "फ़ील्ड" संपत्ति को संशोधित करना है। हालाँकि, चूंकि रेंज स्टेटमेंट मान की एक प्रति लौटाता है, इसलिए परिवर्तन एक स्थानीय कॉपी में किए जाते हैं और मूल सरणी को प्रभावित नहीं करते हैं। नतीजतन, आउटपुट डिफ़ॉल्ट मान के रूप में सभी "फ़ील्ड" गुणों को दिखाता है। इसके बजाय, आपको सूचकांक का उपयोग करके सरणी के माध्यम से पुनरावृति करनी चाहिए, जैसा कि नीचे दिखाया गया है: func मुख्य () { var सरणी [10] MyType IDX के लिए, _: = रेंज सरणी { सरणी [idx] .field = "फू" } के लिए _, ई: = रेंज सरणी { fmt.println (E.field) fmt.println ("-") } }

के लिए लूप में मान के बजाय सूचकांक का उपयोग करके, आप यह सुनिश्चित करते हैं कि "फ़ील्ड" संपत्ति में किए गए परिवर्तन मूल सरणी में परिलक्षित होते हैं।

नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3