If/Else — Go

Percabangan: if, else if, else Go menggunakan kurung kurawal {} untuk blok kode, tapi tidak menggunakan tanda kurung di kondisi (berbeda dari C/Java). Sintaks…

if menjalankan sebuah blok kode cuma kalau kondisinya true; else if dan else menambah cabang lain. Bayangin aturan promo di kasir Warung Bakso Mas Bimo: belanja Rp50.000 ke atas gratis es teh, Rp30.000 ke atas gratis kerupuk, di bawah itu belum dapat bonus. Kasir membaca aturannya dari atas. Begitu satu aturan cocok, dia kasih bonusnya dan aturan di bawahnya gak dibaca lagi.

🧪 Tebakan cepat: urutan ceknya dibalik, total >= 30000 dulu baru total >= 50000. Pelanggan belanja Rp60.000. Dia dapat es teh atau kerupuk? Tebak dulu, jawabannya ada di bagian "Urutan kondisinya penting".

if, else if, else

package main

import "fmt"

func main() {
	total := 45000
	if total >= 50000 {
		fmt.Println("Gratis es teh")
	} else if total >= 30000 {
		fmt.Println("Gratis kerupuk")
	} else {
		fmt.Println("Belum dapat bonus")
	}
}
$ go run bakso.go
Gratis kerupuk
total >= 50000 >= 30000 Tercetak
60000 true (gak dicek) Gratis es teh
45000 false true Gratis kerupuk
20000 false false Belum dapat bonus

Urutan kondisinya penting

Go mengecek dari atas ke bawah dan berhenti di kondisi pertama yang true. Kalau urutannya dibalik, total >= 30000 sudah true untuk 60000, jadi yang tercetak Gratis kerupuk, dan cabang es teh gak akan pernah kepakai. Itu jawaban tebakannya. Aturan bertingkat ditulis dari yang paling ketat: angka terbesar dulu.

Kalau else dihapus dan jadi dua if terpisah, dua-duanya dicek. Total 60000 lalu mencetak Gratis es teh dan Gratis kerupuk. Satu rantai if/else if cuma menjalankan satu cabang.

Di latihan, rantai ini dipakai di dalam fungsi, blok kode bernama yang bisa dipanggil berkali-kali:

func bonus(total int) string {
	if total >= 50000 {
		return "Gratis es teh"
	} else if total >= 30000 {
		return "Gratis kerupuk"
	}
	return "Belum dapat bonus"
}

Kondisi harus bool

Di JavaScript, if (stok) jalan untuk angka selain 0. Go gak punya truthy dan falsy: kondisi harus bernilai bool.

if dengan short statement

if boleh diawali satu statement pendek, dipisah titik koma dari kondisinya:

total := 45000
bayar := 100000
if kembalian := bayar - total; kembalian > 0 {
	fmt.Println("Kembalian:", kembalian)
} else {
	fmt.Println("Uang pas")
}
Kembalian: 55000

Gak ada ternary

Go gak punya operator kondisi ? a : b. bonus := total >= 50000 ? "es teh" : "kerupuk" ditolak dengan invalid character U+003F '?'. Tulis dengan if:

bonus := "kerupuk"
if total >= 50000 {
	bonus = "es teh"
}

⚠️ Jebakan yang sering ketemu

TL;DR: if kondisi { ... } else if kondisi { ... } else { ... }: tanpa kurung di kondisi, kurung kurawal wajib, { dan else di baris yang sama dengan }. Go mengecek dari atas dan menjalankan cabang pertama yang true saja, jadi tulis aturan bertingkat dari yang paling ketat. Kondisi harus bool: gak ada truthy/falsy, tulis stok > 0. if x := ...; kondisi { menjalankan statement pendek dulu, dan x cuma ada di dalam blok if/else itu. Gak ada ternary ? :, pakai if. Di dalam fungsi, return mengirim hasil dan langsung keluar.

Yang akan kamu pelajari