Saya telah melihat beberapa orang mengeluh tentang loop-for, di sepanjang baris "mengapa kita harus mengatakan i = 0; i < len; i++di zaman sekarang ini?".
Saya tidak setuju, saya suka untuk konstruksi. Anda dapat menggunakan versi panjang jika Anda mau, tetapi idiomatis Go adalah
var a = []int{1, 2, 3}
for i, v := range a {
fmt.Println(i, v)
}
The for .. rangemembangun loop atas semua elemen dan persediaan dua nilai - indeks idan nilai v.
range juga berfungsi pada peta dan saluran.
Namun, jika Anda tidak suka fordalam bentuk apa pun, Anda dapat menentukan each, mapdll. Dalam beberapa baris:
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)
}
cetakan
0 : 2
1 : 0
2 : 0
3 : 9
Saya mulai sangat menyukai Go :)