Lección 6 · 6 de 20
Condiciones con if y else · Go
Tome decisiones en Go con if, else if y else, combine condiciones con &&, || y !, y aproveche la instrucción inicial del if.

if ejecuta su bloque solo si la condición es verdadera. En Go la condición no lleva paréntesis, pero las llaves son obligatorias, incluso para una sola línea. else if prueba otra condición y else recoge todo lo demás: con 31 grados se cumple la primera, y las otras ya ni se miran.
Las condiciones se combinan con && (y), || (o) y ! (no). age >= 18 && hasTicket necesita las dos cosas; como age es 17, no se cumple y se pasa a hasTicket && !(age < 16): tiene entrada y no es menor de 16, así que entra acompañado.
Go admite una instrucción inicial antes de la condición, separada por punto y coma: if total := price * float64(units); total >= 50. Primero calcula total y después lo compara. Esa variable solo existe dentro del if y de sus else, y así no quedan variables sueltas que ya no hacen falta.
Con 18.5 euros por 3 unidades, total es 55.5, mayor que 50, y el envío sale gratis. Esta forma es muy común en Go para comprobar errores, como verá en la lección 13: if err := ...; err != nil.
Código · main.go
package mainimport "fmt"func main() { temperature := 31 // The condition needs no parentheses, but the braces are required. if temperature > 30 { fmt.Println("It is hot: drink water") } else if temperature > 15 { fmt.Println("Nice weather for a walk") } else { fmt.Println("Take a coat") } // && (and), || (or) and ! (not) combine conditions. age, hasTicket := 17, true if age >= 18 && hasTicket { fmt.Println("Welcome to the concert") } else if hasTicket && !(age < 16) { fmt.Println("Welcome, with an adult") } else { fmt.Println("Sorry, no entry") } // An init statement runs first; total only exists inside this if. price, units := 18.5, 3 if total := price * float64(units); total >= 50 { fmt.Printf("Total %.2f: free shipping\n", total) } else { fmt.Printf("Total %.2f + 4.95 shipping\n", total) }}Salida · go run main.go
It is hot: drink water Welcome, with an adult Total 55.50: free shipping
Para recordar
- La condición va sin paréntesis y las llaves son obligatorias.
else ifencadena condiciones;elserecoge el resto.&&es «y»,||es «o» y!es «no».if x := ...; condicióndeclara una variable solo para eseif.
Ejercicio
Cambie units a 2 y compruebe que se cobra el envío. Después añada un else if para los pedidos de 30 euros o más, con un envío de 2.95.