En Go, los números se pueden comparar con los siguientes operadores relacionales y de igualdad.
| Comparación | Operador |
|---|---|
| igual | == |
| distinto | != |
| menor | < |
| menor o igual | <= |
| mayor | > |
| mayor o igual | >= |
El resultado de la comparación siempre es un valor booleano, es decir, true o false.
a := 3
a != 4 // true
a > 5 // false
Los operadores de comparación anteriores también se pueden usar para comparar strings. En ese caso se aplica un orden lexicográfico (de diccionario). Por ejemplo:
"apple" < "banana" // true
"apple" > "banana" // false
Los condicionales en Go son similares a los condicionales de otros lenguajes.
El tipo subyacente de cualquier operación condicional es el tipo bool, que puede tener el valor true o false.
Los condicionales se usan a menudo como mecanismos de control de flujo para comprobar distintas condiciones.
Para comprobar un caso en particular se puede usar una sentencia if, que ejecuta su código si la condición subyacente es true, así:
var value string
if value == "val" {
return "was val"
}
En escenarios con más de un caso, se pueden encadenar varias sentencias if usando las sentencias else if y else.
var number int
result := "This number is "
if number > 0 {
result += "positive"
} else if number < 0 {
result += "negative"
} else {
result += "zero"
}
Las sentencias if también pueden incluir una sentencia corta de inicialización que se puede usar para inicializar una o más variables para la sentencia if.
Por ejemplo:
num := 7
if v := 2 * num; v > 10 {
fmt.Println(v)
} else {
fmt.Println(num)
}
// Output: 14
Nota: las variables que se crean en la sentencia de inicialización salen del ámbito al terminar la sentencia
if.
En este ejercicio vas a escribir algo de código para ayudarte a prepararte para comprar un vehículo.
Tienes tres tareas: una para determinar si necesitas una licencia, otra para ayudarte a elegir entre dos vehículos y otra para estimar el precio aceptable de un vehículo usado.
Algunos tipos de vehículos requieren una licencia de conducir para manejarlos.
Supón que solo los tipos "car" y "truck" requieren licencia; todo lo demás se puede manejar sin licencia.
Implementa la función NeedsLicense(kind), que recibe el tipo de vehículo y devuelve un valor Boolean que indica si necesitas una licencia para ese tipo de vehículo.
needLicense := NeedsLicense("car")
// => true
needLicense = NeedsLicense("bike")
// => false
needLicense = NeedsLicense("truck")
// => true
Evalúa tus opciones de vehículos disponibles.
Logras reducirlas a dos opciones, pero necesitas ayuda para tomar la decisión final.
Para eso, implementa la función ChooseVehicle(option1, option2), que recibe dos vehículos como argumentos y devuelve una decisión que incluye la opción que aparece primero en orden lexicográfico.
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."
Ahora que tomaste una decisión, quieres asegurarte de obtener un precio justo en la concesionaria. Como te interesa comprar un vehículo usado, el precio depende de la antigüedad del vehículo. Para una estimación aproximada, supón que si el vehículo tiene menos de 3 años, cuesta el 80% del precio original que tenía cuando era nuevo. Si tiene al menos 10 años, cuesta el 50%. Si el vehículo tiene al menos 3 años pero menos de 10, cuesta el 70% del precio original.
Implementa la función CalculateResellPrice(originalPrice, age), que aplica esta lógica usando if, else if y else (hay otras formas si quieres practicar).
Recibe el precio original y la antigüedad del vehículo como argumentos y devuelve el precio estimado en la concesionaria.
CalculateResellPrice(1000, 1)
// => 800
CalculateResellPrice(1000, 5)
// => 700
CalculateResellPrice(1000, 15)
// => 500
Nota: el valor devuelto es un float64.
Regístrate en Exercism para aprender y dominar Go con 34 conceptos165 ejercicios y mentoría humana real, todo gratis.