Alcance de las variables en Go

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *