Direct naar de hoofdinhoud
Module 2 · Les 1 van 56/50 in de cursus~10 min
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

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

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

Init-instructie: reikwijdte beperkt tot de if

Je kunt een variabele alleen geldig verklaren binnen if/else, scheid het van de voorwaarde met ;:

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

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

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

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

Probeer het

Oefening#go.m2.l1.e1
Pogingen: 0Laden…

Print 'positivo', 'nul' of 'negatief' afhankelijk van de waarde van n.

Editor laden…
Toon hint

'if / else if / else'-keten met voorwaarden op het bord.

Oplossing beschikbaar na 3 pogingen

Oefening#go.m2.l1.e2
Pogingen: 0Laden…

Gebruik de init-instructie om v := 42 in if te declareren en druk deze alleen af ​​als v >= 18.

Editor laden…
Toon hint

Syntaxis: `if init; voorwaarde { ... }`.

Oplossing beschikbaar na 3 pogingen

Quiz#go.m2.l1.e3
Klaar

Wat print dit programma?

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

Samenvatten

  • Voorwaarden zonder haakjes, beugels altijd verplicht.
  • De voorwaarde moet bool zijn: geen impliciete waarheidsgetrouwheid.
  • Init if v, err := f(); err == nil { ... } beperkt het bereik van v en err.
  • Schaduwen in de init: pas op dat u de buitenste variabelen niet overschaduwt.
  • Geen ternair: schrijf een uitgebreide if/else.