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
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.
n := 0
// if n { ... } // ERRORE: int non è bool
if n != 0 { ... } // okPernyataan init: cakupan terbatas pada if
Anda dapat mendeklarasikan variabel yang valid hanya di dalam if/else,
memisahkannya dari kondisi dengan ;:
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.
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 esternaTidak 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.
var label string
if age >= 18 {
label = "adulto"
} else {
label = "minore"
}Cobalah
Cetak 'positivo', 'zero' atau 'negativo' tergantung pada nilai n.
Tunjukkan petunjuk
rantai `if / else if / else` dengan kondisi pada tandanya.
Solusi tersedia setelah 3 upaya
Gunakan pernyataan init untuk mendeklarasikan v := 42 di if dan mencetaknya hanya jika v >= 18.
Tunjukkan petunjuk
Sintaks: `jika init; kondisi {... }`.
Solusi tersedia setelah 3 upaya
Apa yang dicetak oleh program ini?
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x)
} else {
fmt.Println("else:", x)
}
fmt.Println("dopo:", x)Rekap
- Syarat tanpa tanda kurung, kurung selalu wajib.
- Syaratnya harus
bool: tidak ada kebenaran implisit. - Init
if v, err := f(); err == nil { ... }membatasi cakupanvdanerr. - Membayangi di init: hati-hati jangan sampai membayangi variabel luar.
- Tanpa ternary: tulis
if/elseyang diperluas.