Más nyelvekhez hasonlóan a Go is biztosít switch utasítást.
A switch utasítások rövidebb módot kínálnak a hosszú if ... else if utasítások leírására.
Egy switch megírásához kezdd a switch kulcsszóval, majd írj utána egy értéket vagy kifejezést.
Ezután a case kulcsszóval adod meg az egyes feltételeket.
Ezenkívül megadhatsz egy default ágat is, amely akkor fut le, ha az előző case feltételek egyike sem teljesült:
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
}
A switch utasításokban az az érdekes, hogy a switch kulcsszó utáni érték elhagyható, és mindegyik case-hez megadhatsz egy Boolean-feltételt:
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
}
Ebben a feladatban egy Blackjack-játszma első körét szimuláljuk.
Két lapot kapsz, és látni fogod az osztó felfedett lapját. Minden lapot egy string jelöl, például „ace”, „king”, „three”, „two” és így tovább. Az egyes lapok értékei a következők:
| lap | érték | lap | érték |
|---|---|---|---|
| ace | 11 | eight | 8 |
| two | 2 | nine | 9 |
| three | 3 | ten | 10 |
| four | 4 | jack | 10 |
| five | 5 | queen | 10 |
| six | 6 | king | 10 |
| seven | 7 | other | 0 |
Megjegyzés: Az ace általában 1 vagy 11 értéket is felvehet, de az egyszerűség kedvéért most azt feltételezzük, hogy csak a 11-es értéket veheti fel.
Attól függően, hogy milyen két lapot kaptál, és mit mutat az osztó lapja, létezik egy stratégia a játék első körére, amelyben a következő lehetőségeid vannak:
Bár ez még nem az optimális stratégia, azt fogod követni, amelyet a barátod, Alex dolgozott ki, és ami a következő:
Valósíts meg egy függvényt, amely kiszámítja egy lap számértékét:
value := ParseCard("ace")
fmt.Println(value)
// Output: 11
Írj egy függvényt, amely a fent leírt döntési logikát valósítja meg:
func FirstTurn(card1, card2, dealerCard string) string
Íme néhány példa a várt eredményekre:
FirstTurn("ace", "ace", "jack") == "P"
FirstTurn("ace", "king", "ace") == "S"
FirstTurn("five", "queen", "ace") == "H"
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Go nyelvet 35 fogalom167 feladat segítségével, valódi emberi mentorálással, mindez ingyen.