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: 20Finalmente, 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: 10Esto 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.
Desafío
PrincipianteEn 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)
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
4Operadores de comparación y lógicos
Operadores de comparación - Parte 1Operadores de comparación - Parte 2Operador lógico ANDOperador lógico OROperador lógico NOTConceptos básicos de precedencia de operadoresResumen: Realizar comparaciones7Flujo de control: Bucles
Explicación del bucle `for`Bucle `for` - BásicoBucle `for` - Solo condiciónLa palabra clave `break`La palabra clave `continue`Bucles anidadosResumen - Repetición de acciones2Variables y tipos de datos básicos
¿Qué es una variable?Inferencia de tipos con `:=`Enteros (int)Números de punto flotanteBooleanosStringsValores ceroConstantesConvenciones de nomenclaturaResumen - Variables y tipos5Entrada y salida básica
Salida con formatoVerbos de formatoImpresión de tiposObtener entrada básica del usuarioResumen: Entrada y salida8Funciones
Comprendiendo las funcionesDeclaración de una funciónLlamada a funcionesParámetros de funciónRetorno de un solo valorRetorno de múltiples valoresValores de retorno con nombreConceptos básicos del alcance de las funcionesResumen: Creando código reutilizable3Operadores básicos
Operadores aritméticosOperador de divisiónEl operador móduloOperador de asignaciónOperadores de asignación compuestaIncremento y decrementoResumen - Cálculos6Flujo de control: Condicionales
La sentencia `if`La palabra clave `else`La palabra clave `else if`Sombreado de variables en `if`Inicialización de variablesLa sentencia `switch``switch` con expresiones`switch` sin expresiónLa palabra clave `fallthrough`Resumen: Toma de decisiones