ฉันเคยเห็นคนสองสามคนบ่นเรื่อง for-loop ตลอดแนวว่า "ทำไมเราต้องพูดi = 0; i < len; i++ในยุคนี้?"
ฉันไม่เห็นด้วยฉันชอบการสร้าง คุณสามารถใช้เวอร์ชันยาวได้หากต้องการ แต่สำนวน Go คือ
var a = []int{1, 2, 3}
for i, v := range a {
fmt.Println(i, v)
}
for .. rangeสร้างลูปมากกว่าทุกองค์ประกอบและวัสดุสิ้นเปลืองสองค่า - ดัชนีและความคุ้มค่าiv
range ยังทำงานบนแผนที่และช่องต่างๆ
ยังถ้าคุณไม่ชอบforในรูปแบบใด ๆ ที่คุณสามารถกำหนดeach, mapฯลฯ ในไม่กี่บรรทัด:
type IntArr []int
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})
var fnPrint = func(i, v int) {
fmt.Println(i, ":", v)
}
a.each(fnPrint)
}
พิมพ์
0 : 2
1 : 0
2 : 0
3 : 9
ฉันเริ่มชอบ Go มาก :)