Blog de programación, errores, soluciones

Chose Language:
Author: Admin/Publisher | checked

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.

[C1] declaring a variable inside an if
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 2
err := 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:

Checking if if() works
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:

Example1
package 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/else
package 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.”

Category: go
Something wrong? If you found an error or mistake in the content you can contact me on Twitter | @luisg2249_luis.
Recent articles