Prueba de condiciones con expresiones if/else
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 if
ternarias 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.