Lompati ke konten utama
Modul 2 · Pelajaran 2 dari 57/50 dalam kursus~10 min
Pelajaran modul (2/5)

untuk: satu-satunya loop

Go memiliki konstruksi loop tunggal: for. Tidak while, tidak do-while, no foreach (yang ada di pelajaran berikutnya dengan range). Satu kata kunci mencakup semua kasus berkat tiga bentuk.

Tiga bentuk for

Bentuk tiga klausa klasik

Identik dengan C/Java:

Go
for i := 0; i < 5; i++ {
    fmt.Println(i)
}

i memiliki cakupan terbatas pada for. Ketiga klausa tersebut bersifat opsional (Anda bisa hilangkan salah satu dari mereka) tetapi ; tetap ada jika Anda menghilangkan yang perantara.

Bentuk "sementara": syarat saja

Di Go, while hanyalah sebuah for dengan satu ekspresi bool:

Go
i := 0
for i < 5 {
    fmt.Println(i)
    i++
}

Bentuk tak terbatas

Tanpa klausa, loop tidak akan pernah berakhir (kecuali break/return):

Go
for {
    if exitCondition() {
        break
    }
    doWork()
}

Ini adalah pola untuk loop penanganan peristiwa, server, kebijakan percobaan ulang.

break, continue dan label

break keluar dari loop terdalam, continue melompat ke iterasi berikutnya:

Go
for i := 0; i < 10; i++ {
    if i%2 == 0 {
        continue       // salta i pari
    }
    if i > 7 {
        break          // ferma il ciclo
    }
    fmt.Println(i)     // 1 3 5 7
}

Untuk keluar dari loop bersarang ada label (jarang tetapi berguna):

Go
Esterno:
for i := 0; i < 3; i++ {
    for j := 0; j < 3; j++ {
        if i*j == 4 {
            break Esterno   // esce da entrambi
        }
    }
}

Tidak ada operator , seperti di C

Di Go Anda tidak dapat menulis for i, j := 0, 10; i < j; i, j = i+1, j-1: ekspresi posting tidak menerima banyak tugas. Gunakan Go sintaks beberapa tugas:

Go
for i, j := 0, 10; i < j; i, j = i+1, j-1 {
    fmt.Println(i, j)
}

Ini malah berhasil karena i, j = i+1, j-1 adalah single banyak tugas.

Cobalah

Latihan#go.m2.l2.e1
Upaya: 0Memuat…

Cetak angka dari 0 hingga 4 inklusif dengan tiga klausa klasik untuk.

Memuat editor…
Tunjukkan petunjuk

`untuk init; kond; post { ... }` — di sini init adalah `i := 0`.

Solusi tersedia setelah 3 upaya

Latihan#go.m2.l2.e2
Upaya: 0Memuat…

Jumlahkan semua bilangan dari 1 sampai 10 inklusif dengan menggunakan bentuk 'sementara' dari for.

Memuat editor…
Tunjukkan petunjuk

Bentuk 'sementara': `untuk <kondisi> { ... }`.

Solusi tersedia setelah 3 upaya

Quiz#go.m2.l2.e3
Siap

Bentuk manakah yang mewakili loop tak terbatas di Go?

Go
// (a) for i := 0; i < 10; i++ { ... }
// (b) for cond { ... }
// (c) for { ... }
Pilihan jawaban

Rekap

  • Kata kunci tunggal for dengan tiga bentuk: klasik, sementara, tak terbatas.
  • break / continue opsional dengan label untuk loop bersarang.
  • Label Name: sebelum for, gunakan secukupnya.
  • Tidak ada , sebagai operator: gunakan tugas ganda i, j = ..., ....