Go में स्लाइस इटरेशन के दौरान एलिमेंट्स बदलना: क्यों काम नहीं करता और कैसे ठीक करें?
सभी को नमस्ते! मैंने अभी-अभी Go सीखना शुरू किया है और स्लाइस पर इटरेशन करते समय एक अजीब व्यवहार देखा है।
मेरे पास एक सरल कोड है, जहाँ मैं integers के स्लाइस में प्रत्येक एलिमेंट को दोगुना करना चाहता हूँ:
```go
package main
import "fmt"
func main() {
nums := []int{1, 2, 3, 4, 5}
for _, val := range nums {
val = val * 2
}
fmt.Println(nums) // अपेक्षा: [2, 4, 6, 8, 10], लेकिन मिलता है: [1, 2, 3, 4, 5]
}
```
मैंने उम्मीद की थी कि लूप के बाद स्लाइस के मान बदल जाएँगे, लेकिन वे वैसे ही रहे। मैंने जाँचा — कंपाइलर कोई एरर नहीं देता, कोड चलता है, लेकिन परिणाम सही नहीं है।
ऐसा क्यों होता है? मैंने सोचा था कि `val` स्लाइस एलिमेंट का एक reference है, लेकिन ऐसा लगता है कि ऐसा नहीं है। इटरेशन के दौरान स्लाइस के एलिमेंट्स को सही तरीके से कैसे बदलें? क्या इसके अलावा और भी तरीके हैं?