Ana içeriğe geç
Modül 2 · Ders 1 ders 5Kurstaki 6/50~10 min
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

Go
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.

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

Init 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:

Go
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.

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

Üç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.

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

Deneyin

Egzersiz#go.m2.l1.e1
Denemeler: 0Yükleniyor…

N'nin değerine bağlı olarak 'pozitif', 'sıfır' veya 'negativo' yazdırın.

Düzenleyici yükleniyor…
İpucu göster

İşaretteki koşullarla birlikte 'if / else if / else' zinciri.

3 denemeden sonra çözüm mevcut

Egzersiz#go.m2.l1.e2
Denemeler: 0Yükleniyor…

if dosyasında v := 42 bildirmek için init ifadesini kullanın ve yalnızca v >= 18 ise yazdırın.

Düzenleyici yükleniyor…
İpucu göster

Sözdizimi: `if init; koşul { ... }'.

3 denemeden sonra çözüm mevcut

Quiz#go.m2.l1.e3
Hazır

Bu program ne yazdırıyor?

Go
x := 10
if x := 3; x > 5 {
    fmt.Println("dentro:", x)
} else {
    fmt.Println("else:", x)
}
fmt.Println("dopo:", x)
Cevap seçenekleri

Özet

  • Parantezsiz koşullar, parantez her zaman zorunludur.
  • Koşul bool olmalıdır: örtülü doğruluk olmamalıdır.
  • Başlangıç ​​if v, err := f(); err == nil { ... }, v ve err kapsamını sınırlar.
  • Başlangıçta gölgeleme: dış değişkenleri gölgelememeye dikkat edin.
  • Üçlü yok: genişletilmiş bir if/else yazın.