Em Go, os números podem ser comparados com os seguintes operadores relacionais e de igualdade.
| Comparação | Operador |
|---|---|
| igual | == |
| diferente | != |
| menor | < |
| menor ou igual | <= |
| maior | > |
| maior ou igual | >= |
O resultado da comparação é sempre um valor Boolean, ou seja, true ou false.
a := 3
a != 4 // true
a > 5 // false
Os operadores de comparação acima também podem ser usados para comparar strings. Nesse caso, aplica-se uma ordem lexicográfica (de dicionário). Por exemplo:
"apple" < "banana" // true
"apple" > "banana" // false
As condicionais em Go são semelhantes às condicionais de outras linguagens.
O tipo subjacente de qualquer operação condicional é o tipo bool, que pode ter o valor true ou false.
As condicionais são frequentemente usadas como mecanismos de controlo de fluxo para verificar várias condições.
Para verificar um caso específico, pode usar-se uma condicional if, que executa o seu código se a condição subjacente for true, assim:
var value string
if value == "val" {
return "was val"
}
Em situações com mais do que um caso, podem encadear-se várias condicionais if com as cláusulas else if e else.
var number int
result := "This number is "
if number > 0 {
result += "positive"
} else if number < 0 {
result += "negative"
} else {
result += "zero"
}
As condicionais também podem incluir uma instrução curta de inicialização, que pode ser usada para inicializar uma ou mais variáveis para a condicional. Por exemplo:
num := 7
if v := 2 * num; v > 10 {
fmt.Println(v)
} else {
fmt.Println(num)
}
// Output: 14
Nota: quaisquer variáveis criadas na instrução de inicialização saem do âmbito após o fim da condicional.
Neste exercício, vais escrever algum código para te ajudar a preparar-te para comprar um veículo.
Tens três tarefas: uma para determinar se precisas de carta de condução, outra para te ajudar a escolher entre dois veículos e outra para estimar o preço aceitável de um veículo usado.
Alguns tipos de veículos exigem carta de condução para serem conduzidos.
Assume que apenas os tipos "car" e "truck" exigem carta; todos os outros podem ser conduzidos sem carta.
Implementa a função NeedsLicense(kind), que recebe o tipo de veículo e devolve um Boolean que indica se precisas de carta para esse tipo de veículo.
needLicense := NeedsLicense("car")
// => true
needLicense = NeedsLicense("bike")
// => false
needLicense = NeedsLicense("truck")
// => true
Avalias as tuas opções de veículos disponíveis.
Consegues reduzi-las a duas opções, mas precisas de ajuda para tomar a decisão final.
Para isso, implementa a função ChooseVehicle(option1, option2), que recebe dois veículos como argumentos e devolve uma decisão que inclui a opção que vem primeiro por ordem lexicográfica.
vehicle := ChooseVehicle("Wuling Hongguang", "Toyota Corolla")
// => "Toyota Corolla is clearly the better choice."
ChooseVehicle("Volkswagen Beetle", "Volkswagen Golf")
// => "Volkswagen Beetle is clearly the better choice."
Agora que tomaste uma decisão, queres garantir que consegues um preço justo no stand. Como estás interessado em comprar um veículo usado, o preço depende da idade do veículo. Para uma estimativa aproximada, assume que, se o veículo tiver menos de 3 anos, custa 80% do preço original que tinha quando era novo. Se tiver pelo menos 10 anos, custa 50%. Se o veículo tiver pelo menos 3 anos mas menos de 10 anos, custa 70% do preço original.
Implementa a função CalculateResellPrice(originalPrice, age), que aplica esta lógica usando if, else if e else (há outras formas, se quiseres praticar).
Recebe o preço original e a idade do veículo como argumentos e devolve o preço estimado no stand.
CalculateResellPrice(1000, 1)
// => 800
CalculateResellPrice(1000, 5)
// => 700
CalculateResellPrice(1000, 15)
// => 500
Nota que o valor devolvido é um float64.
Inscreve-te no Exercism para aprenderes e dominares Go com 34 conceitos165 exercícios, e mentoria humana real, tudo grátis.