Ámbitos Locales y Globales
En este punto, es fundamental profundizar en el concepto de ámbitos para comprender las áreas donde se pueden acceder a variables (o constantes) específicas y donde no.
El ámbito de una variable o constante define dónde puede ser utilizada.
Cuando una variable o constante se declara fuera de cualquier bloque de código, se vuelve accesible en todo el programa, lo que le otorga el calificativo de tener un ámbito global. En el siguiente fragmento de código, la constante pi ejemplifica este ámbito global:
index.go
12345678package main import "fmt" const pi float32 = 3.1415 func main() { fmt.Println(pi) }
Por el contrario, cuando una variable o constante se declara dentro de un bloque de código, permanece accesible únicamente dentro de ese bloque específico y en cualquier bloque anidado, si corresponde.
La siguiente ilustración delimita las diferencias entre los ámbitos global y local:
El siguiente código demuestra las áreas donde se permite el acceso a variables y donde pueden ocurrir errores:
index.go
12345678910111213141516171819202122232425262728package main import "fmt" func main() { var value_1 int = 1 // Condition 1 if(true) { var value_2 int = 2 // Condition 2 if (true) { var value_3 int = 3 fmt.Println("In Condition 2:", value_1) fmt.Println("In Condition 2:", value_2) fmt.Println("In Condition 2:", value_3) } fmt.Println("In Condition 1:", value_1) fmt.Println("In Condition 1:", value_2) fmt.Println("In Condition 1:", value_3) // Error here } fmt.Println("In Main:", value_1) fmt.Println("In Main:", value_2) // Error here fmt.Println("In Main:", value_3) // Error here }
La variable value_1 permanece accesible en todo el bloque de código main(), incluyendo dentro de bloques de código anidados como Condición 1 y Condición 2. También es accesible dentro de la Condición 1 y su Condición 2 anidada.
Sin embargo, intentar acceder a ella directamente fuera del bloque main() resultará en un error. De manera similar, la variable value_2, declarada dentro de la Condición 2, solo es accesible dentro de ese bloque de código específico.
Es fundamental considerar los alcances en el contexto de las funciones. Cuando declaramos una variable o constante dentro de una función, permanece confinada a esa función y no es accesible en otras funciones, incluyendo main().
Nota
La función
main()se ejecuta automáticamente cuando se ejecuta el programa.
index.go
12345678func myFunc() { var number int = 7 fmt.Println(number) // Accessible here } func main() { fmt.Println(number) // Not accessible here }
Otro punto fundamental a tener en cuenta es que no se pueden declarar dos o más variables con el mismo nombre dentro del mismo alcance o en alcances superpuestos.
index.go
1234567891011func myFunc1() { var number int = 7 var number int = 9 // Error here } func myFunc2() { var number int = 7 if(2 > 1) { var number int = 9 // Error here } }
Sin embargo, es posible declarar variables con el mismo nombre en diferentes ámbitos:
index.go
1234567891011121314151617package main import "fmt" func myFunc1() { var number int = 7 fmt.Println("In Func 1:", number) } func myFunc2() { var number int = 9 fmt.Println("In Func 2:", number) } func main() { myFunc1() myFunc2() }
¡Gracias por tus comentarios!
Pregunte a AI
Pregunte a AI
Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla
Awesome!
Completion rate improved to 1.96
Ámbitos Locales y Globales
Desliza para mostrar el menú
En este punto, es fundamental profundizar en el concepto de ámbitos para comprender las áreas donde se pueden acceder a variables (o constantes) específicas y donde no.
El ámbito de una variable o constante define dónde puede ser utilizada.
Cuando una variable o constante se declara fuera de cualquier bloque de código, se vuelve accesible en todo el programa, lo que le otorga el calificativo de tener un ámbito global. En el siguiente fragmento de código, la constante pi ejemplifica este ámbito global:
index.go
12345678package main import "fmt" const pi float32 = 3.1415 func main() { fmt.Println(pi) }
Por el contrario, cuando una variable o constante se declara dentro de un bloque de código, permanece accesible únicamente dentro de ese bloque específico y en cualquier bloque anidado, si corresponde.
La siguiente ilustración delimita las diferencias entre los ámbitos global y local:
El siguiente código demuestra las áreas donde se permite el acceso a variables y donde pueden ocurrir errores:
index.go
12345678910111213141516171819202122232425262728package main import "fmt" func main() { var value_1 int = 1 // Condition 1 if(true) { var value_2 int = 2 // Condition 2 if (true) { var value_3 int = 3 fmt.Println("In Condition 2:", value_1) fmt.Println("In Condition 2:", value_2) fmt.Println("In Condition 2:", value_3) } fmt.Println("In Condition 1:", value_1) fmt.Println("In Condition 1:", value_2) fmt.Println("In Condition 1:", value_3) // Error here } fmt.Println("In Main:", value_1) fmt.Println("In Main:", value_2) // Error here fmt.Println("In Main:", value_3) // Error here }
La variable value_1 permanece accesible en todo el bloque de código main(), incluyendo dentro de bloques de código anidados como Condición 1 y Condición 2. También es accesible dentro de la Condición 1 y su Condición 2 anidada.
Sin embargo, intentar acceder a ella directamente fuera del bloque main() resultará en un error. De manera similar, la variable value_2, declarada dentro de la Condición 2, solo es accesible dentro de ese bloque de código específico.
Es fundamental considerar los alcances en el contexto de las funciones. Cuando declaramos una variable o constante dentro de una función, permanece confinada a esa función y no es accesible en otras funciones, incluyendo main().
Nota
La función
main()se ejecuta automáticamente cuando se ejecuta el programa.
index.go
12345678func myFunc() { var number int = 7 fmt.Println(number) // Accessible here } func main() { fmt.Println(number) // Not accessible here }
Otro punto fundamental a tener en cuenta es que no se pueden declarar dos o más variables con el mismo nombre dentro del mismo alcance o en alcances superpuestos.
index.go
1234567891011func myFunc1() { var number int = 7 var number int = 9 // Error here } func myFunc2() { var number int = 7 if(2 > 1) { var number int = 9 // Error here } }
Sin embargo, es posible declarar variables con el mismo nombre en diferentes ámbitos:
index.go
1234567891011121314151617package main import "fmt" func myFunc1() { var number int = 7 fmt.Println("In Func 1:", number) } func myFunc2() { var number int = 9 fmt.Println("In Func 2:", number) } func main() { myFunc1() myFunc2() }
¡Gracias por tus comentarios!