Lecții din modul (1/5)
declarațiile if, else și init
În Go, sintaxa if este cea clasică, dar cu două diferențe importante
comparativ cu C/Java: fără paranteze în jurul condiției și
capacitatea de a declara o variabilă temporară direct în if
(instrucțiunea init).
Sintaxa de bază
if temperatura > 30 {
fmt.Println("caldo")
} else if temperatura > 20 {
fmt.Println("mite")
} else {
fmt.Println("fresco")
}Acoladele sunt obligatorii, chiar și pentru blocurile cu o singură linie. The
condiția trebuie să fie de tipul bool: fără „adevăr” precum Python sau JS.
n := 0
// if n { ... } // ERRORE: int non è bool
if n != 0 { ... } // okDeclarație init: domeniul de aplicare limitat la if
Puteți declara o variabilă validă numai în interiorul if/else,
separându-l de condiție cu ;:
if v, err := call(); err == nil {
fmt.Println("ok", v)
} else {
fmt.Println("ko", err)
}
// qui v ed err NON esistono piùEste modelul idiomatic pentru gestionarea erorilor fără a polua domeniul exterior.
Umbrire în domeniul if
Dacă o variabilă exterioară este „umbrită” de init, în interior dacă versiunea locală câștigă. Imediat după, cel exterior reapare.
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 esternaFără operator ternar
Go nu are cond ? a : b. Pentru sarcinile condiționate aveți nevoie de un if/else
în 3-4 rânduri — este o alegere de design pentru a favoriza lizibilitatea.
var label string
if age >= 18 {
label = "adulto"
} else {
label = "minore"
}Încearcă
Tipăriți „pozitiv”, „zero” sau „negativo”, în funcție de valoarea lui n.
Afișează indiciu
`dacă / altfel dacă / altfel` cu condiții pe semn.
Soluție disponibilă după 3 încercări
Utilizați instrucțiunea init pentru a declara v := 42 în if și imprimați-o numai dacă v >= 18.
Afișează indiciu
Sintaxă: `if init; starea { ... }`.
Soluție disponibilă după 3 încercări
Ce imprimă acest program?
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x)
} else {
fmt.Println("else:", x)
}
fmt.Println("dopo:", x)Recapitulare
- Conditii fara paranteze, acolade intotdeauna obligatorii.
- Condiția trebuie să fie
bool: fără adevăr implicit. - Init
if v, err := f(); err == nil { ... }limitează domeniul de aplicare avșierr. - Umbrire în init: aveți grijă să nu umbriți variabilele exterioare.
- Fără ternar: scrieți un
if/elseextins.