Ámbitos Locales y Globales
En este punto, es esencial profundizar en el concepto de ámbitos para comprender las áreas en las que se puede acceder a variables (o constantes) específicas y en las que no.
El ámbito de una variable o constante define dónde puede utilizarse.
Cuando una variable o constante se declara fuera de cualquier bloque de código, se vuelve accesible a través de todo el programa, ganándose la etiqueta 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 de código específico y de cualquier bloque de código anidado, si procede.
La siguiente ilustración muestra las diferencias entre los ámbitos global y local:
El siguiente código muestra las áreas en las que se permite el acceso a variables y en las que pueden producirse 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 valor_1
permanece accesible en todo el bloque de código main()
, incluso 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 anidada Condición 2.
Sin embargo, si se intenta acceder a ella directamente fuera del bloque main()
se producirá un error. De forma similar, la variable valor_2
, declarada dentro de la Condición 2, sólo es accesible dentro de ese bloque de código específico.
Es crucial considerar los ámbitos en el contexto de las funciones. Cuando declaramos una variable o constante dentro de una función, permanece confinada a esa función y es inaccesible en otras funciones, incluyendo main()
.
Nota
main()
funciona como una función ejecutada 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 crucial a tener en cuenta es que no podemos declarar dos o más variables con el mismo nombre dentro del mismo ámbito o ámbitos 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 ámbitos diferentes:
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
Can you explain the difference between global and local scope with more examples?
What happens if I try to access a variable outside its scope?
Can you clarify what is meant by overlapping scopes?
Awesome!
Completion rate improved to 1.96
Ámbitos Locales y Globales
Desliza para mostrar el menú
En este punto, es esencial profundizar en el concepto de ámbitos para comprender las áreas en las que se puede acceder a variables (o constantes) específicas y en las que no.
El ámbito de una variable o constante define dónde puede utilizarse.
Cuando una variable o constante se declara fuera de cualquier bloque de código, se vuelve accesible a través de todo el programa, ganándose la etiqueta 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 de código específico y de cualquier bloque de código anidado, si procede.
La siguiente ilustración muestra las diferencias entre los ámbitos global y local:
El siguiente código muestra las áreas en las que se permite el acceso a variables y en las que pueden producirse 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 valor_1
permanece accesible en todo el bloque de código main()
, incluso 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 anidada Condición 2.
Sin embargo, si se intenta acceder a ella directamente fuera del bloque main()
se producirá un error. De forma similar, la variable valor_2
, declarada dentro de la Condición 2, sólo es accesible dentro de ese bloque de código específico.
Es crucial considerar los ámbitos en el contexto de las funciones. Cuando declaramos una variable o constante dentro de una función, permanece confinada a esa función y es inaccesible en otras funciones, incluyendo main()
.
Nota
main()
funciona como una función ejecutada 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 crucial a tener en cuenta es que no podemos declarar dos o más variables con el mismo nombre dentro del mismo ámbito o ámbitos 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 ámbitos diferentes:
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!