Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Ámbitos Locales y Globales | Funciones
Introducción a Golang

bookÁ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

index.go

copy
12345678
package 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

index.go

copy
12345678910111213141516171819202122232425262728
package 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

index.go

copy
12345678
func 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

index.go

copy
1234567891011
func 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

index.go

copy
1234567891011121314151617
package 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() }
question mark

¿En qué ámbito debemos poner var valor int = 6 para evitar errores?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 2

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

Suggested prompts:

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

bookÁ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

index.go

copy
12345678
package 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

index.go

copy
12345678910111213141516171819202122232425262728
package 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

index.go

copy
12345678
func 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

index.go

copy
1234567891011
func 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

index.go

copy
1234567891011121314151617
package 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() }
question mark

¿En qué ámbito debemos poner var valor int = 6 para evitar errores?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 4. Capítulo 2
some-alt