En Go, los números se pueden comparar con los siguientes operadores relacionales y de igualdad.
| Comparación | Operador |
|---|---|
| igual | == |
| distinto | != |
| menor que | < |
| menor o igual que | <= |
| mayor que | > |
| mayor o igual que | >= |
El resultado de la comparación siempre es un valor de tipo Boolean, es decir, o bien true o bien 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 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 concreto 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"
}
Cuando hay más de un caso, se pueden encadenar varias sentencias if con 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 instrucción de inicialización corta que sirve para inicializar una o varias 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: cualquier variable creada en la instrucción de inicialización queda fuera de scope cuando termina la sentencia
if.
En este ejercicio vas a escribir código para ayudarte a prepararte para comprar un vehículo.
Tienes tres tareas: una para determinar si necesitas un permiso de conducir, otra para ayudarte a elegir entre dos vehículos y otra para estimar el precio aceptable de un vehículo de segunda mano.
Algunos tipos de vehículo requieren un permiso de conducir para poder conducirlos.
Supón que solo los tipos "car" y "truck" requieren permiso y que todo lo demás se puede conducir sin permiso.
Implementa la función NeedsLicense(kind), que recibe el tipo de vehículo y devuelve un valor booleano que indica si necesitas un permiso para ese tipo de vehículo.
needLicense := NeedsLicense("car")
// => true
needLicense = NeedsLicense("bike")
// => false
needLicense = NeedsLicense("truck")
// => true
Evalúas tus opciones de vehículos disponibles.
Consigues reducir tus opciones a dos, pero necesitas ayuda para tomar la decisión final.
Para ello, 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 has tomado una decisión, quieres asegurarte de conseguir un precio justo en el concesionario. Como te interesa comprar un vehículo de segunda mano, 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 el concesionario.
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.