La sentencia if y else en Go
En esta sección, exploraremos cómo utilizar las sentencias if
y else
en Go.
Imagina una sentencia if
como una forma de decir:
“Si esta condición es verdadera, entonces haz esto.”
Es como una herramienta sencilla para tomar decisiones en el código. Veamos un ejemplo escrito en Go:
/* In this case, 'elementos' will be 0 because we're explicitly setting it to 0. But imagine it's the result of a database query that returns 0. */ elements := 0 if elements == 0 { println("no elements to display") }
Siguiendo con esta idea—supongamos que elements
es el número devuelto por una consulta a la base de datos. Si elements == 0
, entonces se imprime:
«no elements to display»
(«no hay elementos para mostrar»)
En la misma página de documentación de Go, hay un ejemplo que muestra que se puede declarar una variable dentro de la sentencia if
. Veremos ese ejemplo a continuación.
if err := file.Chmod(0664); err != nil { log.Print(err) return err }
No te preocupes por lo que estamos haciendo con file.Chmod
, lo veremos en publicaciones futuras. Solo recuerda que puedes declarar una variable dentro de una sentencia if
y compararla.
Esto equivale a hacer lo siguiente:
[C2] declaring a variable inside an if part 2err := file.Chmod(0664) if err != nil { log.Print(err) return err }
Vuelve a mirar el código [C1]. El símbolo ;
separa la declaración de variable err := file.Chmod(0664)
de la verificación condicional err != nil
. Este es un patrón común en Go, que permite realizar ambas operaciones en una sola sentencia if
.
Otro detalle que vale la pena destacar es que Go no requiere paréntesis alrededor de la condición—if err != nil
es perfectamente válido sin envolverlo en ()
.
Si no estás seguro de que puedes usar ()
en Go, aquí tienes un ejemplo que puedes ejecutar en el Go Playground:
package main import "fmt" func main() { err := doSomething() if (err != nil) { fmt.Println("Error occurred:", err) } else { fmt.Println("Everything went fine.") } } func doSomething() error { // Simulate an error — change this to 'nil' to see the other path return fmt.Errorf("simulated failure") }
Chequeando con if si algun error ocuree en Go
El siguiente codigo, es uno que veras a menudo en código de Go
if err != nil { //code }
En este ejemplo, err
es una variable que normalmente se utiliza para almacenar valores de error en Go. Es una abreviación de “error” y forma parte de un idioma común en la programación con Go.
Cuando el error no es nil, indica que ha ocurrido un error. Si el error es nil, significa que no hubo ningún error.
Veamos un ejemplo simple pero funcional en la vida real:
Example1package main import ( "fmt" "os" ) func main() { // Try to open a file file, err := os.Open("example.txt") // Check if an error occurred if err != nil { fmt.Println("Error opening file:", err) return } // If no error, proceed fmt.Println("File opened successfully:", file.Name()) file.Close() }
En este ejemplo, puedes ver una situación de la vida real en la que se intenta abrir un archivo.
Si no se puede abrir, se mostrará el mensaje «Error al abrir el archivo», y la función finalizará utilizando return
, sin activar un panic
Agregando else a nuestro if
Hasta ahora, hemos aprendido cómo verificar una sola condición. Pero ¿qué pasa cuando necesitamos evaluar múltiples condiciones?
Ahí es donde entran en juego else
y else if
.
A continuación, tienes un ejemplo de cómo verificar qué sistema operativo estás utilizando:
Checking the OS with if/elsepackage main import ( "fmt" "runtime" ) func main() { if runtime.GOOS == "windows" { fmt.Println("You are using Windows") } else if runtime.GOOS == "linux" { fmt.Println("You are using Linux") } else if runtime.GOOS == "darwin" { fmt.Println("You are using macOS") } else { fmt.Printf("Unknown operating system: %s\n", runtime.GOOS) } }
else if
te permite comprobar otra condición, mientras que else
se ejecuta cuando ninguna de las condiciones anteriores coincide.
El bloque else
se utiliza para manejar el camino alternativo—lo que sucede si la condición anterior no se cumple.
Actúa como una red de seguridad, asegurando que tu programa sepa qué hacer cuando ninguna de las condiciones del if
o else if
se cumplen.
Puedes pensar en else
como decir:
“Si ninguna de las condiciones anteriores es verdadera, entonces haz esto.”