Assim como outras linguagens, Go também oferece uma instrução switch.
Instruções switch são uma forma mais curta de escrever instruções if ... else if longas.
Para criar um switch, começamos com a palavra-chave switch seguida de um valor ou de uma expressão.
Depois, declaramos cada uma das condições com a palavra-chave case.
Também podemos declarar um caso default, que roda quando nenhuma das condições case anteriores corresponde:
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
}
Uma coisa interessante sobre as instruções switch é que o valor depois da palavra-chave switch pode ser omitido, e podemos ter condições booleanas para cada case:
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
}
Neste exercício, vamos simular a primeira rodada de um jogo de Blackjack.
Você vai receber duas cartas e vai poder ver a carta aberta do dealer. Todas as cartas são representadas por uma string como "ace", "king", "three", "two", etc. Os valores de cada carta são:
| carta | valor | carta | valor |
|---|---|---|---|
| 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 | outra | 0 |
Observação: Normalmente, os ases podem valer 1 ou 11, mas, por simplicidade, vamos assumir que só podem valer 11.
Dependendo das suas duas cartas e da carta do dealer, existe uma estratégia para a primeira rodada do jogo, na qual você tem as seguintes opções:
Embora ainda não seja ideal, você vai seguir a estratégia que seu amigo Alex vem desenvolvendo, que é a seguinte:
Implemente uma função para calcular o valor numérico de uma carta:
value := ParseCard("ace")
fmt.Println(value)
// Output: 11
Escreva uma função que implemente a lógica de decisão descrita acima:
func FirstTurn(card1, card2, dealerCard string) string
Aqui estão alguns exemplos dos resultados esperados:
FirstTurn("ace", "ace", "jack") == "P"
FirstTurn("ace", "king", "ace") == "S"
FirstTurn("five", "queen", "ace") == "H"
Crie sua conta no Exercism para aprender e dominar Go com 35 conceitos167 exercícios e mentoria humana de verdade, tudo de graça.