Saltar al contenido principal
eLearner.app
Módulo 2 · Lección 1 de 56/50 en el curso~10 min
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

Go
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.

Go
n := 0
// if n { ... }   // ERRORE: int non è bool
if n != 0 { ... }  // ok

Declaració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 ;:

Go
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.

Go
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 esterna

Sin 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.

Go
var label string
if age >= 18 {
    label = "adulto"
} else {
    label = "minore"
}

Pruébalo

Ejercicio#go.m2.l1.e1
Intentos: 0Cargando...

Imprima 'positivo', 'cero' o 'negativo' según el valor de n.

Cargando editor...
Mostrar pista

Cadena `if / else if / else` con condiciones en el cartel.

Solución disponible después de 3 intentos

Ejercicio#go.m2.l1.e2
Intentos: 0Cargando...

Utilice la declaración init para declarar v := 42 en if e imprímala solo si v >= 18.

Cargando editor...
Mostrar pista

Sintaxis: `if init; condition { ... }`.

Solución disponible después de 3 intentos

Cuestionario#go.m2.l1.e3
Listo

¿Qué imprime este programa?

Go
x := 10
if x := 3; x > 5 {
    fmt.Println("dentro:", x)
} else {
    fmt.Println("else:", x)
}
fmt.Println("dopo:", x)
Opciones de respuesta

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 de v y err.
  • Sombreado en el inicio: tenga cuidado de no sombrear las variables externas.
  • No ternario: escribe un if/else expandido.