Modulelessen (1/5)
if, else en init-instructies
In Go is de syntaxis van if de klassieke syntaxis, maar met twee belangrijke verschillen
vergeleken met C/Java: geen haakjes rond de voorwaarde, en de
mogelijkheid om een tijdelijke variabele rechtstreeks in de if te declareren
(de init-instructie).
Basissyntaxis
if temperatura > 30 {
fmt.Println("caldo")
} else if temperatura > 20 {
fmt.Println("mite")
} else {
fmt.Println("fresco")
}Accolades zijn verplicht, zelfs voor blokken van één regel. De
voorwaarde moet van het type bool zijn: geen "waarheid" zoals Python of JS.
n := 0
// if n { ... } // ERRORE: int non è bool
if n != 0 { ... } // okInit-instructie: reikwijdte beperkt tot de if
Je kunt een variabele alleen geldig verklaren binnen if/else,
scheid het van de voorwaarde met ;:
if v, err := call(); err == nil {
fmt.Println("ok", v)
} else {
fmt.Println("ko", err)
}
// qui v ed err NON esistono piùHet is het idiomatische patroon voor het omgaan met fouten zonder de buitenruimte te vervuilen.
Schaduw in het if-bereik
Als een buitenste variabele 'overschaduwd' wordt door de init, inside als de lokale versie wint. Direct daarna komt de buitenste weer tevoorschijn.
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 esternaGeen ternaire operator
Go heeft geen cond ? a : b. Voor voorwaardelijke toewijzingen heb je een if/else nodig
in 3-4 regels — het is een ontwerpkeuze die de leesbaarheid bevordert.
var label string
if age >= 18 {
label = "adulto"
} else {
label = "minore"
}Probeer het
Print 'positivo', 'nul' of 'negatief' afhankelijk van de waarde van n.
Toon hint
'if / else if / else'-keten met voorwaarden op het bord.
Oplossing beschikbaar na 3 pogingen
Gebruik de init-instructie om v := 42 in if te declareren en druk deze alleen af als v >= 18.
Toon hint
Syntaxis: `if init; voorwaarde { ... }`.
Oplossing beschikbaar na 3 pogingen
Wat print dit programma?
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x)
} else {
fmt.Println("else:", x)
}
fmt.Println("dopo:", x)Samenvatten
- Voorwaarden zonder haakjes, beugels altijd verplicht.
- De voorwaarde moet
boolzijn: geen impliciete waarheidsgetrouwheid. - Init
if v, err := f(); err == nil { ... }beperkt het bereik vanvenerr. - Schaduwen in de init: pas op dat u de buitenste variabelen niet overschaduwt.
- Geen ternair: schrijf een uitgebreide
if/else.