Em Go, números podem ser comparados usando 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 parecidas com as 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 costumam ser usadas como mecanismos de controle de fluxo para verificar diversas condições.
Para verificar um caso específico, pode-se usar uma condicional if, que executa seu código se a condição subjacente for true, assim:
var value string
if value == "val" {
return "was val"
}
Em cenários com mais de um caso, várias condicionais if podem ser encadeadas usando as instruções 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 if 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 if.
Por exemplo:
num := 7
if v := 2 * num; v > 10 {
fmt.Println(v)
} else {
fmt.Println(num)
}
// Output: 14
Observação: quaisquer variáveis criadas na instrução de inicialização saem do escopo após o fim da condicional
if.
Neste exercício, você vai escrever um pouco de código para ajudar a se preparar para comprar um veículo.
Você tem três tarefas: uma para determinar se você precisa de uma carteira de motorista, uma para ajudar a escolher entre dois veículos e uma para estimar o preço aceitável de um veículo usado.
Alguns tipos de veículo exigem carteira de motorista para serem conduzidos.
Considere que apenas os tipos "car" e "truck" exigem carteira; todo o resto pode ser conduzido sem carteira.
Implemente a função NeedsLicense(kind) que recebe o tipo de veículo e retorna um booleano indicando se você precisa de carteira para aquele tipo de veículo.
needLicense := NeedsLicense("car")
// => true
needLicense = NeedsLicense("bike")
// => false
needLicense = NeedsLicense("truck")
// => true
Você avalia suas opções de veículos disponíveis.
Você consegue reduzi-las a duas opções, mas precisa de ajuda para tomar a decisão final.
Para isso, implemente a função ChooseVehicle(option1, option2) que recebe dois veículos como argumentos e retorna uma decisão que inclui a opção que vem primeiro em 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 você tomou uma decisão, você quer garantir que vai pagar um preço justo na concessionária. Como você está interessado em comprar um veículo usado, o preço depende de quantos anos o veículo tem. Para uma estimativa aproximada, considere que, se o veículo tiver menos de 3 anos, ele 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.
Implemente a função CalculateResellPrice(originalPrice, age) que aplica essa lógica usando if, else if e else (existem outras formas, se você quiser praticar).
Ela recebe o preço original e a idade do veículo como argumentos e retorna o preço estimado na concessionária.
CalculateResellPrice(1000, 1)
// => 800
CalculateResellPrice(1000, 5)
// => 700
CalculateResellPrice(1000, 15)
// => 500
Observação: o valor de retorno é um float64.
Crie sua conta no Exercism para aprender e dominar Go com 34 conceitos165 exercícios e mentoria humana de verdade, tudo de graça.