Menu
Coddy logo textTech

Sombreado de variables en `if`

Parte de la sección Fundamentos del Journey de GO de Coddy — lección 37 de 109.

Aprendamos sobre el sombreado de variables en las sentencias if. Esto te permite crear una variable que solo existe dentro del bloque if y sus bloques else relacionados.

Primero, vamos a crear una variable fuera de nuestra sentencia condicional:

x := 10
fmt.Println("Original x value:", x)

Después de ejecutar este código, tendremos una variable x con el valor 10 que podemos usar en todo nuestro programa.

Ahora, usemos el sombreado de variables (variable shadowing) en una sentencia if para crear una nueva variable que solo exista dentro de ese bloque:

if y := x * 2; y > 15 {
    fmt.Println("y is greater than 15:", y)
    // y solo existe en este bloque
} else {
    fmt.Println("y is not greater than 15:", y)
    // y también está disponible en los bloques else
}

Después de ejecutar este código, Go calculará y como 20 (que es x * 2), comprobará si es mayor que 15 y luego ejecutará el primer bloque. La salida se mostrará en la pantalla:

y is greater than 15: 20

Finalmente, intentemos acceder a nuestras variables después de la sentencia if:

// fmt.Println(y) causaría un error - y no existe aquí
fmt.Println("x is still:", x)

Después de ejecutar este código, aún podemos acceder a x, pero y ya no está disponible porque solo existía dentro de los bloques if y else. La salida mostrará en pantalla:

x is still: 10

Esto demuestra cómo funciona el sombreado de variables en las sentencias if: la variable y solo es accesible dentro de los bloques condicionales donde fue declarada.

challenge icon

Desafío

Principiante

En este desafío, practicarás el sombreado de variables (variable shadowing) en una sentencia if. Verás cómo una variable declarada dentro de un bloque if puede tener el mismo nombre que una variable en el ámbito externo, pero con un valor diferente.

El código tiene una variable message en el ámbito externo. Tu tarea es crear una variable sombreada con el mismo nombre dentro del bloque if y luego imprimir ambas variables para ver el efecto del sombreado.

Hoja de referencia

El sombreado de variables (variable shadowing) en las sentencias if permite crear variables que solo existen dentro del bloque condicional y sus bloques else relacionados.

Sintaxis para el sombreado de variables en sentencias if:

if variable := expression; condition {
    // variable solo existe en este bloque
} else {
    // variable también está disponible en los bloques else
}

Ejemplo:

x := 10
if y := x * 2; y > 15 {
    fmt.Println("y is greater than 15:", y)
} else {
    fmt.Println("y is not greater than 15:", y)
}
// y ya no es accesible aquí
fmt.Println("x is still:", x)

La variable sombreada solo es accesible dentro de los bloques if y else donde fue declarada, no fuera de ellos.

Pruébalo tú mismo

package main

import "fmt"

func main() {
	// Variable de ámbito externo
	message := "Hello from outer scope"
	
	isLoggedIn := true
	
	if isLoggedIn {
		// TODO: Crear una nueva variable llamada 'message' con el valor "Hello from inner scope"
		
		// Esto imprime el mensaje del ámbito interno
		fmt.Println(message)
	}
	
	// Esto imprime el mensaje del ámbito externo
	fmt.Println(message)
}
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos