Golang – Perulangan (for, range)

 

Kalau kamu sedang belajar Golang dan mulai masuk ke bagian perulangan, selamat ya kamu sedang memasuki salah satu fitur paling penting, paling sering dipakai, dan kadang paling bikin frustasi kalau salah kondisi. Untungnya, di Golang semuanya dibuat simpel. Tidak seperti bahasa lain yang punya while, do...while, dan for dengan tiga puluh variasi, Golang itu straight to the point: hanya ada satu keyword perulangan, yaitu for.

Yep, cuma itu.
Tapi jangan salah meski cuma satu, kemampuannya sudah cukup untuk menangani semua kebutuhan looping kamu. Termasuk looping klasik, looping tanpa batas, sampai looping ala anak gaul dengan range.

 

Apa Itu Perulangan dalam Golang?

Perulangan (looping) adalah proses menjalankan blok kode secara berulang sesuai kondisi tertentu. Misalnya kamu punya tugas menyapa teman sebanyak lima kali.

Daripada kamu menulis:

fmt.Println("Halo Asep")
fmt.Println("Halo Asep")
fmt.Println("Halo Asep")
fmt.Println("Halo Asep")
fmt.Println("Halo Asep")

Lebih baik kamu pakai loop. Tinggal satu kali tulis, jadi lima kali jalan.
Lebih hemat kode, lebih cepat, dan lebih enak dilihat.

Dalam Golang, looping paling umum digunakan untuk:

  • Mengakses data dalam array, slice, atau map

  • Mengulang proses hingga kondisi tertentu terpenuhi

  • Menjalankan operasi berulang seperti animasi, kalkulasi, atau membaca data

  • Membuat program berjalan terus (misal: server)

Nah, sekarang mari masuk ke prakteknya!

 

Perulangan ‘for’ Biasa

Format paling standar dari for di Golang mirip dengan bahasa C atau Java.

Bentuknya:

for init; condition; post {
    // kode kamu
}

Mari bedah satu per satu:

  • init → dijalankan satu kali di awal loop

  • condition → dicek di setiap iterasi, kalau false maka loop berhenti

  • post → dijalankan setiap akhir iterasi

Contoh paling klasik:

for i := 1; i <= 5; i++ {
    fmt.Println("Iterasi ke-", i)
}

Output:

Iterasi ke- 1
Iterasi ke- 2
Iterasi ke- 3
Iterasi ke- 4
Iterasi ke- 5

Kenapa ini penting?

Karena pola for model ini adalah dasar dari hampir semua perulangan.
Kamu bisa menggunakannya untuk menghitung, iterasi berurutan, atau bahkan membuat algoritma besar.

 

Perulangan Tanpa Kondisi (Mirip while)

Golang nggak punya keyword while.
Tapi tenang, kamu bisa membuat perulangan model while dengan cara:

for condition {
    // kode
}

Contoh:

i := 1
for i <= 5 {
    fmt.Println("Nilai i:", i)
    i++
}

Sama persis dengan:

while (i <= 5)
{
    ...
}

Kenapa berguna?

Karena kamu bisa bikin loop yang bergantung pada kondisi variabel yang berubah dari dalam.

 

Perulangan Tanpa Batas (Infinite Loop)

Ini cocok untuk program server, worker, listener, atau kalau kamu lagi iseng.

for {
    fmt.Println("Halo, aku tidak akan berhenti...")
}

Tapi hati-hati.
Kalau ini kamu jalankan di production tanpa alasan jelas, DevOps bisa marah besar.

Untuk keluar dari loop ini kamu harus pakai break atau return.

 

Perulangan dengan range

Sekarang ini favorit semua programmer Golang. range sangat berguna untuk membaca isi:

  • array

  • slice

  • map

  • string

  • channel

Formatnya:

for index, value := range collection {
    ...
}

Contoh dengan slice

names := []string{"Andi", "Budi", "Cici"}

for i, name := range names {
    fmt.Println("Index:", i, "Nama:", name)
}

Output:

Index: 0 Nama: Andi
Index: 1 Nama: Budi
Index: 2 Nama: Cici

Kalau kamu cuma butuh value, index bisa kamu buang pakai _:

for _, name := range names {
    fmt.Println(name)
}

Kalau cuma perlu index?

for i := range names {
    fmt.Println("Index:", i)
}

Contoh dengan map

scores := map[string]int{
    "Asep": 90,
    "Ujang": 85,
    "Sari": 95,
}

for name, score := range scores {
    fmt.Println(name, ":", score)
}

Di map, urutan tidak pernah dijamin. Jadi jangan kaget kalau outputnya acak tiap run.

 

Perulangan untuk String

Ingat: string di Golang adalah kumpulan byte, bukan kumpulan karakter Unicode.

Dengan range, Golang otomatis membaca rune (karakter):

text := "Halo"

for i, char := range text {
    fmt.Println(i, string(char))
}

Bagus untuk string berisi karakter non-ASCII.

 

Menggunakan break dan continue

Golang menyediakan cara untuk mengontrol alur loop.

break

Memberhentikan perulangan.

for i := 1; i <= 10; i++ {
    if i == 5 {
        break
    }
    fmt.Println(i)
}

Loop berhenti saat i == 5.

continue

Skip iterasi saat ini dan lanjut ke berikutnya.

for i := 1; i <= 5; i++ {
    if i == 3 {
        continue
    }
    fmt.Println(i)
}

Angka 3 dilewati.

 

Label pada Perulangan

Biasanya dipakai saat nested loop (loop di dalam loop).

Tanpa label, break hanya berhenti di loop paling dalam.

Dengan label:

outer:
for i := 1; i <= 3; i++ {
    for j := 1; j <= 3; j++ {
        if j == 2 {
            break outer
        }
        fmt.Println(i, j)
    }
}

Loop langsung berhenti semua ketika j == 2.

Fitur ini tidak wajib, tapi sangat berguna saat algoritma kompleks.

 

Contoh Studi Kasus

Mari lihat contoh simpel yang dipakai di dunia nyata.

A. Menghitung jumlah angka genap

numbers := []int{1,2,3,4,5,6,7,8,9,10}

count := 0

for _, n := range numbers {
    if n%2 == 0 {
        count++
    }
}

fmt.Println("Jumlah angka genap:", count) 

B. Cek apakah email sudah terdaftar

emails := []string{"a@gmail.com", "b@gmail.com", "c@gmail.com"}

target := "b@gmail.com"
found := false

for _, e := range emails {
    if e == target {
        found = true
        break
    }
}

fmt.Println("Email ditemukan:", found)

C. Looping untuk server (infinite loop)

for {
    fmt.Println("Menunggu request...")
    time.Sleep(1 * time.Second)
}
 

Tips Penting agar Perulangan Kamu Efisien

Golang terkenal cepat, tapi tetap ada trik untuk performa:

✅ Hindari melakukan operasi berat di dalam loop

Misalnya sorting, query database, parsing besar.

✅ Gunakan range untuk data collection

Lebih rapi dan idiomatis.

✅ Gunakan break saat kondisi sudah terpenuhi

Bikin program lebih cepat.

✅ Hindari infinite loop tanpa jeda

Minimal kasih time.Sleep() atau buat mekanisme keluar.

✅ Untuk map, ingat bahwa urutannya acak

Jangan buat logika yang mengandalkan urutan map.


Perulangan di Golang itu sederhana, kuat, dan sangat fleksibel.
Meskipun hanya ada satu keyword (for), kamu bisa menggunakannya sebagai:

  • loop klasik (for init; condition; post)

  • loop ala while (for condition)

  • infinite loop (for {})

  • loop untuk array, slice, map, string (for range)

  • loop bersarang yang bisa dikendalikan dengan label

Dengan menguasai for dan range, kamu sudah memegang salah satu pondasi terpenting dalam pemrograman Golang.

Semakin sering kamu latihan, semakin natural rasanya.
Dan siapa tahu, nanti kamu bisa bikin kode yang bukan hanya rapi dan cepat, tapi juga bisa bikin programmer lain bilang:

“Wah ini sih Golang banget cara ngodingnya!”



0 Comments:

Posting Komentar