Prerrequisito: Variables en lenguaje de programación Go
El Alcance de una variable se puede definir como una parte del programa donde se puede acceder a una variable en particular. Una variable se puede definir en una clase, método, bucle, etc. Al igual que C / C++ , en Golang todos los identificadores tienen un alcance léxico (o estático), es decir, el alcance de una variable se puede determinar en tiempo de compilación. O puede decir que solo se puede llamar a una variable desde el bloque de código en el que está definida.
Las reglas de alcance de las variables de Golang se pueden dividir en dos categorías que dependen de dónde se declaran las variables:
- Variables locales (declaradas dentro de un bloque o una función)
- Variables Globales (Declaradas fuera de un bloque o una función)
Variables locales
- Las variables que se declaran dentro de una función o un bloque se denominan variables locales. Estos no son accesibles fuera de la función o bloque.
- Estas variables también se pueden declarar dentro de la instrucción for, while, etc. dentro de una función.
- Sin embargo, se puede acceder a estas variables mediante los bloques de código anidados dentro de una función.
- Estas variables también se denominan variables de bloque.
- Habrá un error de tiempo de compilación si estas variables se declaran dos veces con el mismo nombre en el mismo ámbito.
- Estas variables no existen después de que finaliza la ejecución de la función.
- La variable que se declara fuera del bucle también es accesible dentro de los bucles anidados. Significa que una variable global será accesible para los métodos y todos los bucles. La variable local será accesible para hacer un bucle y funcionar dentro de esa función.
- Una variable que se declara dentro del cuerpo de un bucle no será visible desde el exterior del cuerpo del bucle.
Ejemplo:
// Go program to illustrate the // local variables package main import "fmt" // main function func main() { // from here local level scope of main function starts // local variables inside the main function var myvariable1, myvariable2 int = 89, 45 // Display the values of the variables fmt.Printf("The value of myvariable1 is : %d\n", myvariable1) fmt.Printf("The value of myvariable2 is : %d\n", myvariable2) } // here local level scope of main function ends
Producción:
The value of myvariable1 is : 89 The value of myvariable2 is : 45
Variables globales
- Las variables que se definen fuera de una función o un bloque se denominan variables globales.
- Estos están disponibles a lo largo de la vida de un programa.
- Estos se declaran en la parte superior del programa fuera de todas las funciones o bloques.
- Se puede acceder a estos desde cualquier parte del programa.
Ejemplo:
// Go program to illustrate the // global variables package main import "fmt" // global variable declaration var myvariable1 int = 100 func main() { // from here local level scope starts // local variables inside the main function var myvariable2 int = 200 // Display the value of global variable fmt.Printf("The value of Global myvariable1 is : %d\n", myvariable1) // Display the value of local variable fmt.Printf("The value of Local myvariable2 is : %d\n", myvariable2) // calling the function display() } // here local level scope ends // taking a function func display() { // local level starts // Display the value of global variable fmt.Printf("The value of Global myvariable1 is : %d\n", myvariable1) } // local scope ends here
Producción:
The value of Global myvariable1 is : 100 The value of Local myvariable2 is : 200 The value of Global myvariable1 is : 100
Nota: ¿Qué pasará si existe una variable local con el mismo nombre que la variable global dentro de una función?
La respuesta es simple, es decir, el compilador dará preferencia a la variable local. Por lo general, cuando se definen dos variables con el mismo nombre, el compilador produce un error de tiempo de compilación. Pero si las variables se definen en diferentes ámbitos, el compilador lo permite. Siempre que haya una variable local definida con el mismo nombre que una variable global, el compilador dará prioridad a la variable local.
- Ejemplo: en el siguiente programa, puede ver claramente la salida. Como el valor de myvariable1 es 200, que está dando en la función principal. Entonces puedes decir que una variable local tiene una preferencia alta sobre una variable global.
// Go program to show compiler giving preference
// to a local variable over a global variable
package main
import
"fmt"
// global variable declaration
var myvariable1
int
= 100
func main() {
// from here local level scope starts
// local variables inside the main function
// it is same as global variable
var myvariable1
int
= 200
// Display the value
fmt.Printf(
"The value of myvariable1 is : %d\n"
,
myvariable1)
}
// here local level scope ends
Producción:
The value of myvariable1 is : 200
Publicación traducida automáticamente
Artículo escrito por Anshul_Aggarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA