ప్రధాన కంటెంట్‌కు వెళ్లండి
మాడ్యూల్ 2 · 5లో పాఠం 1కోర్సులో 6/50~10 min
మాడ్యూల్ పాఠాలు (1/5)

if, else, మరియు init స్టేట్‌మెంట్‌లు

గోలో if సింటాక్స్ క్లాసిక్ ఒకటి కానీ రెండు ముఖ్యమైన తేడాలు ఉన్నాయి C/Javaతో పోలిస్తే: కుండలీకరణాలు లేవు పరిస్థితి చుట్టూ, మరియు if లో నేరుగా తాత్కాలిక వేరియబుల్‌ని ప్రకటించగల సామర్థ్యం (init స్టేట్‌మెంట్).

ప్రాథమిక వాక్యనిర్మాణం

Go
if temperatura > 30 {
    fmt.Println("caldo")
} else if temperatura > 20 {
    fmt.Println("mite")
} else {
    fmt.Println("fresco")
}

బ్రేస్‌లు తప్పనిసరి, సింగిల్-లైన్ బ్లాక్‌లకు కూడా. ది పరిస్థితి తప్పనిసరిగా bool రకంగా ఉండాలి: పైథాన్ లేదా JS వంటి "నిజం" లేదు.

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

Init స్టేట్‌మెంట్: స్కోప్ ఐఫ్‌కి పరిమితం చేయబడింది

మీరు if/else లోపల చెల్లుబాటు అయ్యే మాత్రమే వేరియబుల్‌ని ప్రకటించవచ్చు, ;తో షరతు నుండి వేరు చేయడం:

Go
if v, err := call(); err == nil {
    fmt.Println("ok", v)
} else {
    fmt.Println("ko", err)
}
// qui v ed err NON esistono più

ఇది బాహ్య పరిధిని కలుషితం చేయకుండా లోపాలను నిర్వహించడానికి ఇడియోమాటిక్ నమూనా.

if స్కోప్‌లో షాడోయింగ్

ఒక బాహ్య వేరియబుల్ init ద్వారా **"షాడోడ్"**ని పొందినట్లయితే, లోపల స్థానిక వెర్షన్ గెలిస్తే. వెనువెంటనే, బయటిది మళ్లీ ఉద్భవిస్తుంది.

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

టెర్నరీ ఆపరేటర్ లేరు

Goకి cond ? a : b లేదు. షరతులతో కూడిన అసైన్‌మెంట్‌ల కోసం మీకు if/else అవసరం 3-4 లైన్లలో — ఇది చదవడానికి అనుకూలంగా ఉండేలా డిజైన్ ఎంపిక.

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

దీనిని ప్రయత్నించండి

వ్యాయామం#go.m2.l1.e1
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

n విలువను బట్టి 'పాజిటీవో', 'సున్నా' లేదా 'నెగటివో' ముద్రించండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

గుర్తుపై షరతులతో కూడిన `if / else if / else` గొలుసు.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

వ్యాయామం#go.m2.l1.e2
ప్రయత్నాలు: 0లోడ్ అవుతోంది...

ifలో v := 42ని ప్రకటించడానికి init స్టేట్‌మెంట్‌ని ఉపయోగించండి మరియు v >= 18 అయితే మాత్రమే ప్రింట్ చేయండి.

ఎడిటర్ లోడ్ అవుతోంది…
సూచనను చూపించు

సింటాక్స్: `if init; షరతు { ... }`.

3 ప్రయత్నాల తర్వాత పరిష్కారం లభిస్తుంది

Quiz#go.m2.l1.e3
సిద్ధంగా ఉంది

ఈ ప్రోగ్రామ్ ఏమి ముద్రిస్తుంది?

Go
x := 10
if x := 3; x > 5 {
    fmt.Println("dentro:", x)
} else {
    fmt.Println("else:", x)
}
fmt.Println("dopo:", x)
సమాధాన ఎంపికలు

రీక్యాప్

  • కుండలీకరణాలు లేని పరిస్థితులు, కలుపులు ఎల్లప్పుడూ తప్పనిసరి.
  • షరతు తప్పనిసరిగా bool అయి ఉండాలి: అవ్యక్త సత్యం లేదు.
  • Init if v, err := f(); err == nil { ... } v మరియు err పరిధిని పరిమితం చేస్తుంది.
  • initలో షేడోయింగ్: బయటి వేరియబుల్స్ షాడో కాకుండా జాగ్రత్త వహించండి.
  • టెర్నరీ లేదు: విస్తరించిన if/elseని వ్రాయండి.