3. If, For & Switch
if / else
Section titled “if / else”if nilai >= 85 { fmt.Println("Sangat baik")} else if nilai >= 55 { fmt.Println("Lulus")} else { fmt.Println("Belum lulus")}Tidak perlu kurung di sekitar kondisi, tapi kurung kurawal wajib — bahkan untuk satu baris.
if juga bisa diawali pernyataan singkat. Variabelnya hanya hidup di dalam blok if:
if sisa := stok - terjual; sisa < 5 { fmt.Println("Stok menipis:", sisa)}Operator perbandingan: == != < <= > >=. Operator logika: && (dan), || (atau), ! (bukan).
for: satu-satunya perulangan
Section titled “for: satu-satunya perulangan”Go tidak punya while — semua perulangan memakai for:
// gaya klasikfor i := 1; i <= 3; i++ { fmt.Println(i)}
// gaya "while"n := 3for n > 0 { n--}
// selamanya — hentikan dengan breakfor { if selesai() { break }}range mengambil indeks dan isi dari slice, string, atau map:
daftar := []int{92, 78, 55}for i, n := range daftar { fmt.Println(i, n) // 0 92, 1 78, 2 55}Tidak butuh indeksnya? Ganti dengan _ (blank identifier): for _, n := range daftar. Ingat: variabel yang tidak dipakai adalah error.
continue melompat ke putaran berikutnya, break keluar dari perulangan.
switch
Section titled “switch”switch lebih rapi daripada if-else yang panjang:
switch hari {case "Sabtu", "Minggu": fmt.Println("Libur")default: fmt.Println("Kerja")}Tanpa ekspresi setelah switch, setiap case berisi kondisi — pengganti if-else if:
switch {case suhu > 80: fmt.Println("Bahaya!")case suhu > 60: fmt.Println("Panas")default: fmt.Println("Normal")}go vet
Section titled “go vet”go vet mencari kesalahan yang lolos compile, misalnya format Printf yang jumlahnya tidak cocok dengan argumennya:
fmt.Printf("%d dari %d lulus\n", lulus)$ go vet# nilai./main.go:19:2: fmt.Printf format %d reads arg #2, but call has 1 argTidak ada output dari go vet artinya tidak ditemukan masalah.
- Masuk ke
nilailalu jalankan programnya. Semua predikat masih?.Petunjuk
cd nilai && go run . - Lengkapi
predikatdenganif/else if: ≥85 A, ≥70 B, ≥55 C, selain itu D.Petunjuk
if nilai >= 85 { return "A" } else if nilai >= 70 { ... } — lalu go run . - Hitung yang lulus (nilai ≥ 55) di dalam loop, lalu cetak
Lulus: 4 dari 5.Petunjuk
lulus := 0 sebelum for, if n >= 55 { lulus++ } di dalamnya, lalu fmt.Println("Lulus:", lulus, "dari", len(daftar)) - Tulis ulang
predikatmemakaiswitchtanpa ekspresi. Outputnya harus tetap sama.Petunjuk
switch { case nilai >= 85: return "A" ... default: return "D" } - Periksa kesalahan umum dengan
go vet.Petunjuk
go vet

