முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 2 · பாடம் 1 இன் 5பாடத்திட்டத்தில் 6/50~10 min
தொகுதி பாடங்கள் (1/5)

if, else, மற்றும் init அறிக்கைகள்

Go இல் if தொடரியல் கிளாசிக் ஒன்றாகும் ஆனால் இரண்டு முக்கிய வேறுபாடுகள் உள்ளன C/Java உடன் ஒப்பிடும்போது: அடைப்புக்குறிகள் இல்லை நிபந்தனையைச் சுற்றி, மற்றும் if இல் நேரடியாக ஒரு தற்காலிக மாறியை அறிவிக்கும் திறன் (init அறிக்கை).

அடிப்படை தொடரியல்

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

பிரேஸ்கள் கட்டாயம், ஒற்றை வரித் தொகுதிகளுக்கும் கூட. தி நிபந்தனை bool வகையாக இருக்க வேண்டும்: Python அல்லது 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 இன் மதிப்பைப் பொறுத்து 'positivo', 'zero' அல்லது 'negativo' அச்சிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

அடையாளத்தில் நிபந்தனைகளுடன் `எனில் / வேறு என்றால் / வேறு` சங்கிலி.

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

உடற்பயிற்சி#go.m2.l1.e2
முயற்சிகள்: 0ஏற்றுகிறது…

if இல் v := 42 ஐ அறிவிக்க init அறிக்கையைப் பயன்படுத்தவும் மற்றும் v >= 18 எனில் மட்டும் அச்சிடவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

தொடரியல்: `இனிட் என்றால்; நிபந்தனை { ... }`.

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.