1 Gambaran Umum tentang Pernyataan Perulangan

Dalam bahasa Go, pernyataan perulangan memungkinkan kita untuk menjalankan sebuah blok kode beberapa kali. Ketika Anda perlu melakukan operasi tertentu secara berulang, pernyataan perulangan menjadi sangat berguna. Misalnya, Anda mungkin ingin mengiterasi setiap elemen dalam sebuah array, atau mengulangi sebuah operasi hingga kondisi tertentu terpenuhi. Di Go, pernyataan perulangan sebagian besar diimplementasikan menggunakan kata kunci for, yang merupakan satu-satunya pernyataan perulangan dalam bahasa Go. Penggunaan yang benar dari pernyataan perulangan sangat penting untuk menulis kode yang efisien dan mudah dipelihara.

2 Dasar-dasar Perulangan for

2.1 Struktur Perulangan for

Perulangan for dalam bahasa Go terdiri dari tiga bagian:

  1. Pernyataan inisialisasi: dieksekusi sebelum iterasi pertama, biasanya digunakan untuk mendeklarasikan penghitung perulangan.
  2. Ekspresi kondisi: dievaluasi sebelum setiap iterasi. Jika kondisinya true, blok perulangan dieksekusi.
  3. Pernyataan pos: dieksekusi setelah blok kode setiap iterasi, biasanya digunakan untuk memperbarui penghitung perulangan.

Syntax dari perulangan for adalah sebagai berikut:

for pernyataan inisialisasi; ekspresi kondisi; pernyataan pos {
    // kode badan perulangan
}

2.2 Contoh Sederhana Perulangan for

Mari kita pahami proses eksekusi perulangan for melalui contoh sederhana:

package main

import "fmt"

func main() {
    for i := 0; i < 5; i++ {
        fmt.Println("Nilai i adalah:", i)
    }
}

Pada contoh ini, variabel i diinisialisasi sebagai 0. Perulangan for memeriksa apakah kondisi i < 5 adalah benar. Jika kondisinya benar, blok perulangan dieksekusi dan nilai i dicetak. Setelah menjalankan blok perulangan, nilai i diperbarui dengan i++ (operasi penambahan), dan kemudian perulangan memeriksa kondisi lagi hingga nilai i mencapai 5, pada saat kondisinya menjadi salah dan perulangan for berhenti.

2.3 Contoh Perulangan for Lainnya

Perulangan for dalam bahasa Go sangat fleksibel dan dapat ditulis dalam berbagai bentuk untuk menangani skenario yang berbeda.

2.3.1 Perulangan Tanpa Batas

Di Go, Anda dapat menghilangkan pernyataan inisialisasi, ekspresi kondisi, dan pernyataan pos dari perulangan for, menciptakan perulangan tanpa batas yang akan berjalan sampai diakhiri oleh pernyataan break atau nilai kembalian dari suatu fungsi.

for {
    // Kode dalam perulangan tanpa batas
    if kondisiTertentu {
        break // Keluar dari perulangan ketika kondisi tertentu terpenuhi
    }
}

2.3.2 Perulangan Hanya dengan Kondisi

Di Go, Anda juga dapat menggunakan perulangan for yang hanya berisi kondisi, mirip dengan while dalam bahasa pemrograman lain.

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

Kode di atas akan mencetak 0 hingga 4, dan perulangan akan berakhir ketika n mencapai 5.

2.3.3 Perulangan melalui sebuah array atau slice

Di Go, kata kunci range digunakan untuk menyederhanakan iterasi melalui setiap elemen dari sebuah array atau slice.

items := []int{1, 2, 3, 4, 5}
for indeks, nilai := range items {
    fmt.Printf("Indeks: %d, Nilai: %d\n", indeks, nilai)
}

Kode di atas akan mencetak indeks dan nilai dari setiap elemen. Jika Anda hanya memerlukan nilai dari elemen-elemen tersebut, Anda dapat menggunakan _ untuk mengabaikan indeks.

for _, nilai := range items {
    fmt.Printf("Nilai: %d\n", nilai)
}

Catatan: Penggunaan array akan dijelaskan secara detail di bab-bab berikutnya. Jika Anda tidak memahami bagian ini, tidak masalah asalkan Anda memahami bahwa for loop dapat digunakan dengan cara ini.

2.3.4 Melooping melalui peta

Saat melakukan iterasi melalui peta, kombinasi dari loop for dan ekspresi range sangat kuat. Ini memungkinkan Anda untuk mendapatkan setiap pasangan kunci-nilai dari peta.

colors := map[string]string{"red": "#ff000", "green": "#00ff00", "blue": "#000ff"}
for key, value := range colors {
    fmt.Printf("Kunci: %s, Nilai: %s\n", key, value)
}

Dalam contoh ini, kita mencetak semua kunci dan nilainya yang sesuai dalam peta colors. Seperti saat melakukan iterasi melalui potongan data, jika Anda hanya memerlukan kunci atau nilai, Anda dapat memilih untuk mengabaikan yang lainnya.

Catatan: Penggunaan peta akan dijelaskan secara rinci dalam bab-bab berikutnya. Jika Anda tidak memahami bagian ini, itu tidak masalah selama Anda memahami bahwa loop for dapat digunakan seperti ini.

3 Mengendalikan alur dari loop

3.1 Menggunakan break untuk mengakhiri loop

Terkadang kita perlu keluar dari loop sebelum waktunya ketika kondisi tertentu terpenuhi, dan dalam kasus seperti itu, pernyataan break dapat digunakan. Berikut adalah contoh penggunaan break untuk keluar dari loop:

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i == 5 {
            break // Keluar dari loop ketika i sama dengan 5
        }
        fmt.Println("Nilai i adalah:", i)
    }
    // Outputnya hanya akan berisi nilai dari 0 hingga 4
}

3.2 Menggunakan continue untuk melewati iterasi

Dalam situasi tertentu, kita mungkin ingin melewati iterasi saat ini dan melanjutkan dengan iterasi berikutnya dalam loop. Hal ini dapat dicapai menggunakan pernyataan continue. Berikut adalah contohnya:

package main

import "fmt"

func main() {
    for i := 0; i < 10; i++ {
        if i%2 != 0 {
            continue // Lewati iterasi ini jika i ganjil
        }
        fmt.Println("Bilangan Genap:", i)
    }
}