¿Qué significa “scope” en programación?
El scope o alcance de una variable, se refiere a donde esta variable existe y tiene una relación con el lugar en el que esta fue declarada.
¿Cómo funciona el scope en Go?
- Dentro de llaves
{}
que definen un bloque. Las variables declaradas dentro de llaves, pueden ser accedidas solo dentro de estas. - En ocasiones se utilizan bloques dentro de bloques, el alcance de la variable es a partir del bloque en el cual esta fue definida.
- Por lo general se utiliza indentación para separar el alcance de cada bloque.
Ejemplo del uso de scope en Go
package main
import "fmt"
var var1 = "Este es el nivel 1"
func main() {
var var2 = "Este es el nivel 2"
{
var var3 = "Este es el nivel 3"
}
fmt.Println(var1)
fmt.Println(var2)
fmt.Println(var3)
}
Si intentamos ejecutar el código mostrado, nos toparemos con el problema del compilador.
# command-line-arguments
016_scope/main.go:14:14: undefined: var3
Y esto se debe a que la variable var3
se ha definido en un bloque fuera del alcance de la instrucción fmt.Println
. Ya que como se comento el alcance de las variables es solo a partir del bloque en el cual son definidas.
Para poder corregir este problema, tenemos que mover la instrucción fmt.Println
a un lugar en donde var3
sea accesible. Corrigiendo el ejemplo anterior tendríamos.
package main
import "fmt"
var var1 = "Este es el nivel 1"
func main() {
var var2 = "Este es el nivel 2"
{
var var3 = "Este es el nivel 3"
fmt.Println(var3)
}
fmt.Println(var1)
fmt.Println(var2)
}