Kurzusok
/
Go
Go
/
Tanterv
/
Feltételes elágazások: switch
Fe

Feltételes elágazások: switch ebben a kurzusban: Go

1 feladat

A(z) Feltételes elágazások: switch fogalomról

A switch utasítás kiértékel egy kifejezést, és lefuttatja az első olyan case ágat, amelynek értéke megegyezik a kifejezés értékével. Gyakran áttekinthetőbb alternatívája a hosszú if ... else if láncoknak.

Alapvető használat

operatingSystem := "windows"

switch operatingSystem {
case "windows":
    // do something if the operating system is windows
case "linux":
    // do something if the operating system is linux
case "macos":
    // do something if the operating system is macos
default:
    // do something if the operating system is none of the above
}

Egyetlen case ágba vesszővel több értéket is csoportosíthatsz. Az ág akkor illeszkedik, ha a kifejezés bármelyikükkel megegyezik:

switch operatingSystem {
case "windows", "linux":
    // do something if the operating system is windows or linux
case "macos":
    // do something if the operating system is macos
default:
    // do something if the operating system is none of the above
}

Kifejezés nélküli switch

A switch utáni kifejezés teljesen el is hagyható. Ilyenkor minden case ág egy logikai kifejezést tartalmaz, és az fut le, amelyik elsőként true értékre értékelődik.

age := 21

switch {
case age > 20 && age < 30:
    // do something if age is between 20 and 30
case age == 10:
    // do something if age is equal to 10
default:
    // do something else for every other case
}

Inicializáló utasítás

Az if-hez hasonlóan a switch is tartalmazhat a kifejezés előtt egy rövid inicializáló utasítást. Az ott deklarált változók scope-ja a switch blokkra korlátozódik:

switch v := getValue(); {
case v < 0:
    // do something if v is less than 0
case v == 0:
    // do something if v is 0
default:
    // do something else for every other case
}
// v will not be accessible here

Fallthrough

A fallthrough hatására a következő case ág törzse is lefut, függetlenül attól, hogy annak kifejezése illeszkedne-e. A case törzsének utolsó utasításaként kell szerepelnie, és lennie kell egy következő ágnak, amely lefuthat.

A fallthrough ritka az idiomatikus Go-ban, mert egymástól függővé teszi a szomszédos case ágakat. Emiatt nehezebb az egyes ágakat önmagukban átlátni, és a switch is nehezebben olvashatóvá válik. Ha az ágak viselkedése azonos kell legyen, világosabb, ha vesszővel csoportosítod őket. Ha más okból osztozik a logika több ágon, érdemes a közös logikát egy segédfüggvénybe kiemelni.

s := "hello"

switch s {
case "hello":
    fmt.Println("hello")
    fallthrough
case "world":
    fmt.Println("world") // also runs, even though s != "world"
}
// Output:
// hello
// world

Ha többet szeretnél megtudni, nézd meg a Go by Example: Switch oldalt vagy a Go nyelvi specifikációt.

Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Feltételes elágazások: switch fogalmat