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

இடியோமேடிக் சுவிட்ச்

கோவின் switch சி/ஜாவாவை விட அதிக பணிச்சூழலியல் கொண்டது: ஒவ்வொரு case அதன் சொந்த மறைமுகத் தொகுதி (எழுதுவதற்கு break இல்லை), நீங்கள் குழுவாக்கலாம் காற்புள்ளியுடன் பல மதிப்புகள், மற்றும் வெளிப்பாடு இல்லாமல் switch செயல்படும் மேலும் படிக்கக்கூடிய if/else if சங்கிலி.

மதிப்பை இயக்கவும்

Go
giorno := "mar"
switch giorno {
case "lun", "mar", "mer", "gio", "ven":
    fmt.Println("feriale")
case "sab", "dom":
    fmt.Println("weekend")
default:
    fmt.Println("sconosciuto")
}

case காற்புள்ளிகளால் பிரிக்கப்பட்ட பல மதிப்புகளை ஏற்றுக்கொள்கிறது மற்றும் ** மறைமுகமான எதுவும் இல்லை fallthrough**: ஒரு வழக்கு செயல்படுத்தப்பட்டவுடன், சுவிட்ச் வெளியேறும்.

நிபந்தனை இல்லாமல் மாறவும்

நீங்கள் வெளிப்பாட்டைத் தவிர்த்துவிட்டால், சுவிட்ச் trueஐ மதிப்பிடுகிறது மற்றும் ஒவ்வொன்றும் case bool நிபந்தனை. இது நீண்ட if/else if சங்கிலிகளுக்கு மாற்று மொழி:

Go
switch {
case x < 0:
    fmt.Println("negativo")
case x == 0:
    fmt.Println("zero")
case x < 10:
    fmt.Println("piccolo")
default:
    fmt.Println("grande")
}

Init அறிக்கை

if ஐப் போலவே, switch ஒரு init அறிக்கையையும் ஏற்கிறது:

Go
switch n := len(s); {
case n == 0:
    fmt.Println("vuoto")
case n > 100:
    fmt.Println("lungo")
default:
    fmt.Println("ok")
}

n சுவிட்சின் உள்ளே மட்டுமே உள்ளது.

வெளிப்படையான fallthrough

நீங்கள் உண்மையில் அடுத்த வழக்கில் விழ விரும்பினால், நீங்கள் அதை எழுத வேண்டும்:

Go
switch 1 {
case 1:
    fmt.Println("uno")
    fallthrough
case 2:
    fmt.Println("due")  // anche questo viene stampato
case 3:
    fmt.Println("tre")  // questo no
}

வகை சுவிட்ச் (முன்னோட்டம்)

இடைமுகத்தின் டைனமிக் வகை அடிப்படையில் பாகுபாடு காட்ட இது உங்களை அனுமதிக்கிறது மதிப்பு. இடைமுகங்கள் தொகுதியில் அதை ஆழமாகப் பார்ப்போம்:

Go
var i interface{} = "ciao"
switch v := i.(type) {
case int:
    fmt.Println("int:", v)
case string:
    fmt.Println("string:", v)
default:
    fmt.Printf("tipo %T\n", v)
}

முயற்சி செய்து பாருங்கள்

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

லூன்/மார்/மெர்/ஜியோ/வெனுக்கான 'feriale' ஐ அச்சிடவும், இல்லையெனில் 'வார இறுதி', g இன் மதிப்பை மாற்றவும்.

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

5 வார நாட்களை காற்புள்ளிகளால் பிரிக்கப்பட்ட ஒரு ஒற்றை வழக்கில் தொகுக்கவும்.

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

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

x ஐப் பொறுத்து 'neg', 'zero' அல்லது 'pos' அச்சிட நிபந்தனை இல்லாமல் சுவிட்சைப் பயன்படுத்தவும்.

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

`ஸ்விட்ச்`க்குப் பிறகு வெளிப்பாடு இல்லை, `{`.

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

Quiz#go.m2.l4.e3
தயார்

இந்த நிரல் என்ன அச்சிடுகிறது?

Go
switch 1 {
case 1:
    fmt.Print("a")
case 2:
    fmt.Print("b")
}
பதில் விருப்பங்கள்

மறுபரிசீலனை

  • case காற்புள்ளிகளால் பிரிக்கப்பட்ட பல மதிப்புகளை ஏற்கிறது.
  • ** மறைமுகமான சரிவு இல்லை**: ஒவ்வொரு வழக்குக்கும் அதன் சொந்த மறைமுகமான break உள்ளது.
  • switch { ... } வெளிப்பாடு இல்லாமல் = மேலும் படிக்கக்கூடிய if/else if சங்கிலி.
  • தொடக்க அறிக்கை: switch x := f(); { ... }, தொகுதிக்கு வரம்புக்குட்பட்டது.
  • fallthrough உள்ளது ஆனால் அரிது; அதன் நிலையை மதிப்பிடாமல் அடுத்த வழக்கில் நுழைகிறது.
  • டைனமிக் வகை (இடைமுகங்கள் தொகுதி) அடிப்படையில் பாகுபாடு காட்ட v := i.(type) என தட்டச்சு செய்யவும்.