ฉันเคยเห็นคนสองสามคนบ่นเรื่อง 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
สร้างลูปมากกว่าทุกองค์ประกอบและวัสดุสิ้นเปลืองสองค่า - ดัชนีและความคุ้มค่าi
v
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 มาก :)