
Go From Zero to Hero #10: Logika Bertingkat: Menguasai Komposisi Struktur Kontrol (Nested Loop)
- Daffa Fadhil
- Golang, Code
- 26 Juni 2026
Table of Contents
Halo Go Developers! Selamat datang kembali di seri Go From Zero to Hero.
Di artikel kesembilan kemarin, kita sudah berhasil membongkar trik cerdik menyulap satu kata kunci for untuk membuat logika While-Loop dan Repeat-Until. Sekarang, kita sudah tahu cara membuat program yang bisa berputar secara dinamis berdasarkan kondisi tertentu.
Nah, di artikel kesepuluh ini, kita akan menaikkan lagi ketajaman logika berpikir kita ke tingkat yang lebih menantang! Kita akan berkenalan dengan konsep Komposisi Struktur Kontrol, atau yang lebih populer di kalangan programmer dengan sebutan struktur bersarang (Nested).
Pernah gak sih kamu membayangkan bagaimana aplikasi bioskop mengecek kursi penonton? Mereka harus mengecek baris demi baris, lalu di setiap baris mereka harus mengecek nomor kursi satu per satu dari kiri ke kanan. Logika “di dalam baris ada kursi” atau “di dalam perulangan ada perulangan lagi” inilah yang akan kita pelajari hari ini!
Di artikel ini, kita akan mengupas tuntas cara menggabungkan percabangan di dalam perulangan (If inside Loop) hingga perulangan di dalam perulangan (Nested Loop), lengkap dengan analogi dunia nyata dan contoh kode yang bikin kamu langsung paham.
Di akhir artikel nanti, kamu akan memiliki pondasi logika yang sangat kuat sebelum kita melompat ke materi pengolahan data yang lebih kompleks di artikel berikutnya!
Sudah siap melatih otak dengan logika bertingkat? Yuk, siapkan teks editor favoritmu, ambil posisi duduk paling nyaman, dan mari kita mulai!
Apa Itu Komposisi Struktur Kontrol?
Sederhananya, Komposisi Struktur Kontrol adalah kondisi di mana kita memasang satu struktur kontrol (bisa if-else atau for) di dalam struktur kontrol lainnya.
Bayangkan seperti boneka Rusia (Matryoshka)βketika kamu membuka satu boneka besar, di dalamnya ada boneka lagi yang lebih kecil. Di dunia pemrograman, ada dua kombinasi bersarang yang paling sering kita gunakan:
- Percabangan di dalam Perulangan (If di dalam For)
- Perulangan di dalam Perulangan (For di dalam For / Nested Loop)
Mari kita bedah satu per satu!
1. Percabangan di Dalam Perulangan (If inside For)
Kombinasi ini digunakan ketika kamu ingin melakukan perulangan, tetapi di setiap putarannya komputer harus melakukan seleksi kondisi terlebih dahulu.
Analisis Kasus: Kamu sedang memeriksa sekantong buah apel. Kamu ingin memisahkan mana apel yang segar dan mana apel yang busuk. Proses memeriksa seluruh isi kantong adalah Perulangan, sedangkan proses menentukan apel itu segar atau busuk adalah Percabangan.
Mari kita lihat contoh kodenya di Go-lang:
package main
import "fmt"
func main() {
// Kita lakukan looping dari angka 1 sampai 5
for i := 1; i <= 5; i++ {
// Di setiap putaran, cek apakah angka tersebut ganjil atau genap
if i % 2 == 0 {
fmt.Printf("Angka %d adalah GENAP\n", i)
} else {
fmt.Printf("Angka %d adalah GANJIL\n", i)
}
}
}
Cara Komputer Membaca Kode: Komputer akan berputar sebanyak 5 kali. Pada putaran pertama (i = 1), komputer masuk ke dalam for, lalu menabrak kondisi if (1 % 2 == 0). Karena hasilnya salah (false), komputer masuk ke blok else dan mencetak “Angka 1 adalah GANJIL”. Begitu seterusnya sampai putaran kelima.
2. Perulangan di Dalam Perulangan (Nested Loop)
Nah, ini dia menu utama kita yang sering banget bikin mahasiswa informatika pusing tujuh keliling saat ujian praktikum. Nested Loop terjadi ketika ada keyword for di dalam keyword for.
Analisis Kasus: Ingat analogi bioskop tadi? Misalkan bioskop tersebut memiliki 2 baris (Baris A dan Baris B), dan setiap baris memiliki 3 kursi (Kursi 1, 2, dan 3). Untuk membersihkan seluruh kursi, petugas kebersihan harus berjalan ke Baris A dulu, lalu mengelap Kursi 1, 2, dan 3. Setelah beres, baru dia pindah ke Baris B dan mengelap Kursi 1, 2, dan 3.
Mari kita tuangkan ke dalam kode Go:
package main
import "fmt"
func main() {
// Loop Luar (Outer Loop) untuk mengontrol BARIS
for baris := 1; baris <= 2; baris++ {
// Loop Dalam (Inner Loop) untuk mengontrol NOMOR KURSI
for kursi := 1; kursi <= 3; kursi++ {
fmt.Printf("Memeriksa Baris %d - Kursi %d\n", baris, kursi)
}
fmt.Println("--------------------------------") // Pembatas antar baris
}
}
Jika kamu jalankan kodenya, output-nya akan seperti ini:
Memeriksa Baris 1 - Kursi 1
Memeriksa Baris 1 - Kursi 2
Memeriksa Baris 1 - Kursi 3
--------------------------------
Memeriksa Baris 2 - Kursi 1
Memeriksa Baris 2 - Kursi 2
Memeriksa Baris 2 - Kursi 3
--------------------------------
Warning
Golden Rule / Aturan Emas Nested Loop: Loop bagian dalam (Inner Loop) HARUS berputar sampai selesai sepenuhnya terlebih dahulu, baru setelah itu Loop bagian luar (Outer Loop) bisa berganti ke putaran berikutnya!
Kesimpulan & Penutup
Hebat, Logika Berpikirmu Sudah Naik Level! π§
Selamat! Kamu sudah berhasil menaklukkan salah satu materi paling menantang dalam dunia pemrograman dasar. Sekarang program Go kamu sudah jauh lebih cerdas dan fleksibel karena mampu menggabungkan berbagai struktur kontrol secara bersamaan, baik itu menyisipkan kondisi di dalam perulangan maupun membuat perulangan bertingkat (Nested Loop).
Yuk, Nyicip Eksperimen Kecil! π οΈ
Biar makin paham, coba utak-atik kode program bioskop di atas. Coba ganti batas maksimum baris menjadi 3 dan batas maksimum kursi menjadi 5, lalu jalankan kodenya.
Kira-kira berapa total baris teks pemeriksaan kursi yang tercetak di terminalmu sekarang? Yuk, tulis jawabanmu di kolom komentar!
π― Tantangan Untukmu (Challenge!)
Cobalah buat sebuah program Go yang menggunakan Nested Loop untuk mencetak pola bintang berbentuk segitiga siku-siku seperti ini di terminal:
*
**
***
****
*****
Petunjuk: Jumlah bintang yang dicetak di setiap baris sangat bergantung pada nomor baris yang sedang berjalan!
Bisa memecahkannya? Yuk, pamerkan potongan kodenya atau bagikan cerita suksesmu di kolom komentar di bawah! Kalau ada yang bingung, tanyakan saja, kita selesaikan sama-sama.
Bocoran Artikel Selanjutnya π
Setelah logika bertingkat dan struktur kontrolmu terasah tajam, kini saatnya kita melangkah ke level pemrograman yang lebih profesional dan terorganisasi! Di artikel Go From Zero to Hero #11 selanjutnya, kita akan membedah topik yang sangat seru dan krusial untuk menjaga kerapian kodemu, yaitu Mengenal Fungsi (Function) di Go β Cara Membuat Kode Lebih Clean dan Reusable. Siapkan diri kamu untuk naik level lagi!
Sampai jumpa di artikel berikutnya, tetap semangat, dan happy coding!