మాడ్యూల్ పాఠాలు (4/5)
ఇడియోమాటిక్ స్విచ్
గో యొక్క switch అనేది C/Java కంటే ఎక్కువ సమర్థత కలిగి ఉంది: ప్రతి 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 కామాలతో వేరు చేయబడిన బహుళ విలువలను అంగీకరిస్తుంది మరియు అవ్యక్తంగా ఏమీ లేదు
ఫాల్త్రూ: కేసు అమలు చేయబడిన వెంటనే, స్విచ్ నిష్క్రమిస్తుంది.
షరతు లేకుండా మారండి
మీరు వ్యక్తీకరణను వదిలివేస్తే, స్విచ్ 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)
}దీనిని ప్రయత్నించండి
lun/mar/mer/gio/ven కోసం '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)అని టైప్ చేయండి.