Modül dersleri (1/5)
if, else ve init ifadeleri
Go'da if sözdizimi klasiktir ancak iki önemli farkı vardır
C/Java ile karşılaştırıldığında: koşulun etrafında parantez yoktur ve
geçici bir değişkeni doğrudan if dosyasında bildirme yeteneği
(init ifadesi).
Temel sözdizimi
if temperatura > 30 {
fmt.Println("caldo")
} else if temperatura > 20 {
fmt.Println("mite")
} else {
fmt.Println("fresco")
}Tek hatlı bloklar için bile parantez zorunludur.
koşul bool türünde olmalıdır: Python veya JS gibi "doğruluk" yoktur.
n := 0
// if n { ... } // ERRORE: int non è bool
if n != 0 { ... } // okInit ifadesi: kapsam if ile sınırlıdır
if/else içinde yalnızca geçerli bir değişken bildirebilirsiniz,
onu durumdan ; ile ayırarak:
if v, err := call(); err == nil {
fmt.Println("ok", v)
} else {
fmt.Println("ko", err)
}
// qui v ed err NON esistono piùDış kapsamı kirletmeden hataları ele almak için kullanılan deyimsel kalıptır.
If kapsamında gölgeleme
Eğer dıştaki bir değişken init tarafından "gölgelenirse", içeride yerel sürüm kazanırsa. Hemen ardından dıştaki yeniden ortaya çıkıyor.
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Üçlü operatör yok
Go'da cond ? a : b yok. Koşullu atamalar için if/else'ye ihtiyacınız vardır.
3-4 satırda — okunabilirliği destekleyen bir tasarım tercihidir.
var label string
if age >= 18 {
label = "adulto"
} else {
label = "minore"
}Deneyin
N'nin değerine bağlı olarak 'pozitif', 'sıfır' veya 'negativo' yazdırın.
İpucu göster
İşaretteki koşullarla birlikte 'if / else if / else' zinciri.
3 denemeden sonra çözüm mevcut
if dosyasında v := 42 bildirmek için init ifadesini kullanın ve yalnızca v >= 18 ise yazdırın.
İpucu göster
Sözdizimi: `if init; koşul { ... }'.
3 denemeden sonra çözüm mevcut
Bu program ne yazdırıyor?
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x)
} else {
fmt.Println("else:", x)
}
fmt.Println("dopo:", x)Özet
- Parantezsiz koşullar, parantez her zaman zorunludur.
- Koşul
boololmalıdır: örtülü doğruluk olmamalıdır. - Başlangıç
if v, err := f(); err == nil { ... },vveerrkapsamını sınırlar. - Başlangıçta gölgeleme: dış değişkenleri gölgelememeye dikkat edin.
- Üçlü yok: genişletilmiş bir
if/elseyazın.