Lompati ke konten utama
Modul 2 · Pelajaran 1 dari 56/50 dalam kursus~10 min
Pelajaran modul (1/5)

pernyataan if, else, dan init

Di Go, sintaks if adalah sintaksis klasik tetapi dengan dua perbedaan penting dibandingkan dengan C/Java: tidak ada tanda kurung di sekitar kondisi, dan kemampuan untuk mendeklarasikan variabel sementara secara langsung di if (pernyataan init).

Sintaks dasar

Go
if temperatura > 30 {
    fmt.Println("caldo")
} else if temperatura > 20 {
    fmt.Println("mite")
} else {
    fmt.Println("fresco")
}

Kawat gigi bersifat wajib, bahkan untuk blok satu baris. Itu syaratnya harus bertipe bool: tidak ada "kebenaran" seperti Python atau JS.

Go
n := 0
// if n { ... }   // ERRORE: int non è bool
if n != 0 { ... }  // ok

Pernyataan init: cakupan terbatas pada if

Anda dapat mendeklarasikan variabel yang valid hanya di dalam if/else, memisahkannya dari kondisi dengan ;:

Go
if v, err := call(); err == nil {
    fmt.Println("ok", v)
} else {
    fmt.Println("ko", err)
}
// qui v ed err NON esistono più

Ini adalah pola idiomatis untuk menangani kesalahan tanpa mencemari lingkup luar.

Membayangi dalam lingkup if

Jika variabel luar mendapat "dibayangi" oleh init, di dalamnya jika versi lokal menang. Tepat setelahnya, bagian luarnya muncul kembali.

Go
x := 10
if x := 3; x > 5 {
    fmt.Println("dentro:", x)  // mai stampato (3 < 5)
} else {
    fmt.Println("else:", x)    // 3
}
fmt.Println("dopo:", x)         // 10 — quella esterna

Tidak ada operator ternary

Go tidak memiliki cond ? a : b. Untuk penugasan bersyarat Anda memerlukan if/else dalam 3-4 baris — ini adalah pilihan desain yang mengutamakan keterbacaan.

Go
var label string
if age >= 18 {
    label = "adulto"
} else {
    label = "minore"
}

Cobalah

Latihan#go.m2.l1.e1
Upaya: 0Memuat…

Cetak 'positivo', 'zero' atau 'negativo' tergantung pada nilai n.

Memuat editor…
Tunjukkan petunjuk

rantai `if / else if / else` dengan kondisi pada tandanya.

Solusi tersedia setelah 3 upaya

Latihan#go.m2.l1.e2
Upaya: 0Memuat…

Gunakan pernyataan init untuk mendeklarasikan v := 42 di if dan mencetaknya hanya jika v >= 18.

Memuat editor…
Tunjukkan petunjuk

Sintaks: `jika init; kondisi {... }`.

Solusi tersedia setelah 3 upaya

Quiz#go.m2.l1.e3
Siap

Apa yang dicetak oleh program ini?

Go
x := 10
if x := 3; x > 5 {
    fmt.Println("dentro:", x)
} else {
    fmt.Println("else:", x)
}
fmt.Println("dopo:", x)
Pilihan jawaban

Rekap

  • Syarat tanpa tanda kurung, kurung selalu wajib.
  • Syaratnya harus bool: tidak ada kebenaran implisit.
  • Init if v, err := f(); err == nil { ... } membatasi cakupan v dan err.
  • Membayangi di init: hati-hati jangan sampai membayangi variabel luar.
  • Tanpa ternary: tulis if/else yang diperluas.