தொகுதி பாடங்கள் (4/5)
இடியோமேடிக் சுவிட்ச்
கோவின் switch சி/ஜாவாவை விட அதிக பணிச்சூழலியல் கொண்டது: ஒவ்வொரு case அதன்
சொந்த மறைமுகத் தொகுதி (எழுதுவதற்கு break இல்லை), நீங்கள் குழுவாக்கலாம்
காற்புள்ளியுடன் பல மதிப்புகள், மற்றும் வெளிப்பாடு இல்லாமல் switch செயல்படும்
மேலும் படிக்கக்கூடிய if/else if சங்கிலி.
மதிப்பை இயக்கவும்
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 சங்கிலிகளுக்கு மாற்று மொழி:
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 அறிக்கையையும் ஏற்கிறது:
switch n := len(s); {
case n == 0:
fmt.Println("vuoto")
case n > 100:
fmt.Println("lungo")
default:
fmt.Println("ok")
}n சுவிட்சின் உள்ளே மட்டுமே உள்ளது.
வெளிப்படையான fallthrough
நீங்கள் உண்மையில் அடுத்த வழக்கில் விழ விரும்பினால், நீங்கள் அதை எழுத வேண்டும்:
switch 1 {
case 1:
fmt.Println("uno")
fallthrough
case 2:
fmt.Println("due") // anche questo viene stampato
case 3:
fmt.Println("tre") // questo no
}வகை சுவிட்ச் (முன்னோட்டம்)
இடைமுகத்தின் டைனமிக் வகை அடிப்படையில் பாகுபாடு காட்ட இது உங்களை அனுமதிக்கிறது மதிப்பு. இடைமுகங்கள் தொகுதியில் அதை ஆழமாகப் பார்ப்போம்:
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)
}முயற்சி செய்து பாருங்கள்
லூன்/மார்/மெர்/ஜியோ/வெனுக்கான 'feriale' ஐ அச்சிடவும், இல்லையெனில் 'வார இறுதி', g இன் மதிப்பை மாற்றவும்.
குறிப்பைக் காட்டு
5 வார நாட்களை காற்புள்ளிகளால் பிரிக்கப்பட்ட ஒரு ஒற்றை வழக்கில் தொகுக்கவும்.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
x ஐப் பொறுத்து 'neg', 'zero' அல்லது 'pos' அச்சிட நிபந்தனை இல்லாமல் சுவிட்சைப் பயன்படுத்தவும்.
குறிப்பைக் காட்டு
`ஸ்விட்ச்`க்குப் பிறகு வெளிப்பாடு இல்லை, `{`.
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
இந்த நிரல் என்ன அச்சிடுகிறது?
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)என தட்டச்சு செய்யவும்.