Lecciones del módulo (1/5)
if, else y declaraciones de inicio
En Go la sintaxis if es la clásica pero con dos diferencias importantes
en comparación con C/Java: sin paréntesis alrededor de la condición y el
capacidad de declarar una variable temporal directamente en el if
(la declaración inicial).
Sintaxis básica
if temperatura > 30 {
fmt.Println("caldo")
} else if temperatura > 20 {
fmt.Println("mite")
} else {
fmt.Println("fresco")
}Las llaves son obligatorias, incluso para bloques de una sola línea. el
La condición debe ser de tipo bool: sin "veracidad" como Python o JS.
n := 0
// if n { ... } // ERRORE: int non è bool
if n != 0 { ... } // okDeclaración de inicio: alcance limitado al if
Puedes declarar una variable válida sólo dentro de if/else,
separándolo de la condición con ;:
if v, err := call(); err == nil {
fmt.Println("ok", v)
} else {
fmt.Println("ko", err)
}
// qui v ed err NON esistono piùEs el patrón idiomático para manejar errores sin contaminar el ámbito exterior.
Sombreado en el alcance if
Si una variable externa queda "sombreada" por el init, dentro si gana la versión local. Inmediatamente después, el exterior reaparece.
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x) // mai stampato (3 < 5)
} else {
fmt.Println("else:", x) // 3
}
fmt.Println("dopo:", x) // 10 — quella esternaSin operador ternario
Go no tiene CÓDIGOPH0. Para asignaciones condicionales necesitas un if/else
en 3-4 líneas: es una elección de diseño para favorecer la legibilidad.
var label string
if age >= 18 {
label = "adulto"
} else {
label = "minore"
}Pruébalo
Imprima 'positivo', 'cero' o 'negativo' según el valor de n.
Mostrar pista
Cadena `if / else if / else` con condiciones en el cartel.
Solución disponible después de 3 intentos
Utilice la declaración init para declarar v := 42 en if e imprímala solo si v >= 18.
Mostrar pista
Sintaxis: `if init; condition { ... }`.
Solución disponible después de 3 intentos
¿Qué imprime este programa?
x := 10
if x := 3; x > 5 {
fmt.Println("dentro:", x)
} else {
fmt.Println("else:", x)
}
fmt.Println("dopo:", x)Resumen
- Condiciones sin paréntesis, las llaves siempre son obligatorias.
- La condición debe ser
bool: sin veracidad implícita. - Init
if v, err := f(); err == nil { ... }limita el alcance devyerr. - Sombreado en el inicio: tenga cuidado de no sombrear las variables externas.
- No ternario: escribe un
if/elseexpandido.