मैंने कुछ लोगों को फॉर-लूप के बारे में शिकायत करते हुए देखा है, "हमें i = 0; i < len; i++इस दिन और उम्र में क्यों कहना चाहिए ?" की तर्ज पर ।
मैं असहमत हूं, मुझे निर्माण पसंद है। आप चाहें तो लंबे संस्करण का उपयोग कर सकते हैं, लेकिन मुहावरेदार गो है
var a = []int{1, 2, 3}
for i, v := range a {
fmt.Println(i, v)
}
for .. rangeसूचकांक - निर्माण सब कुछ खत्म हो तत्वों और आपूर्ति दो मानों लूप iऔर मूल्य v।
range नक्शे और चैनलों पर भी काम करता है।
फिर भी, यदि आप नापसंद करते हैं forकिसी भी रूप में, आप को परिभाषित कर सकते each, mapआदि कुछ लाइनों में:
type IntArr []int
// 'each' takes a function argument.
// The function must accept two ints, the index and value,
// and will be called on each element in turn.
func (a IntArr) each(fn func(index, value int)) {
for i, v := range a {
fn(i, v)
}
}
func main() {
var a = IntArr([]int{2, 0, 0, 9}) // create int slice and cast to IntArr
var fnPrint = func(i, v int) {
fmt.Println(i, ":", v)
} // create a function
a.each(fnPrint) // call on each element
}
प्रिंट
0 : 2
1 : 0
2 : 0
3 : 9
मुझे बहुत अच्छा लगने लगा है :)