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 है, लेकिन ऐसा लगता है कि ऐसा नहीं है। इटरेशन के दौरान स्लाइस के तत्वों को सही तरीके से कैसे बदलें? क्या उपयोग करने के अलावा और भी तरीके हैं?