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