Prueba de condiciones con expresiones if/else

Completado

El flujo de control más básico en cualquier lenguaje de programación es la instrucción if/else. En Go, las instrucciones if/else son sencillas. Sin embargo, antes de empezar a sentirse cómodo escribiendo programas en Go, debe comprender algunas diferencias.

Vamos a ver la sintaxis de Go de las instrucciones if .

Sintaxis de las instrucciones if

A diferencia de otros lenguajes de programación, en Go, no es necesario incluir las condiciones entre paréntesis. La cláusula else es opcional. Sin embargo, las llaves siguen siendo necesarias. Además, Go no ofrece compatibilidad con instrucciones ifternarias para reducir las líneas, por lo que debe escribir la instrucción if completa cada vez.

A continuación, se muestra un ejemplo básico de una instrucción if:

package main

import "fmt"

func main() {
    x := 27
    if x%2 == 0 {
        fmt.Println(x, "is even")
    }
}

En Visual Studio Code, si en la sintaxis de Go las condiciones se escriben entre paréntesis, los paréntesis se quitan automáticamente cuando se guarda el programa.

Instrucciones if compuestas

Go admite instrucciones if compuestas. Las instrucciones se pueden anidar mediante la instrucción else if. Este es un ejemplo:

package main

import "fmt"

func givemeanumber() int {
    return -1
}

func main() {
    if num := givemeanumber(); num < 0 {
        fmt.Println(num, "is negative")
    } else if num < 10 {
        fmt.Println(num, "has only one digit")
    } else {
        fmt.Println(num, "has multiple digits")
    }
}

En este código, observe que la variable num almacena el valor devuelto por la función givemeanumber() y la variable está disponible en todas las ramas if. Pero si intenta imprimir el valor de la variable num fuera del bloque if, recibirá un error:

package main

import "fmt"

func somenumber() int {
    return -7
}
func main() {
    if num := somenumber(); num < 0 {
        fmt.Println(num, "is negative")
    } else if num < 10 {
        fmt.Println(num, "has 1 digit")
    } else {
        fmt.Println(num, "has multiple digits")
    }

    fmt.Println(num)
}

Al ejecutar el programa, la salida de error tiene este aspecto:

# command-line-arguments
./main.go:17:14: undefined: num

En Go, la declaración de variables dentro de bloques if es idiomática. Es una manera de programar de forma eficaz mediante una convención común en Go.