Ir - Reglas de alcance
Un alcance en cualquier programación es una región del programa donde puede existir una variable definida y más allá de eso no se puede acceder a la variable. Hay tres lugares donde las variables se pueden declarar en el lenguaje de programación Go:
Dentro de una función o un bloque (local variables)
Fuera de todas las funciones (global variables)
En la definición de parámetros de función (formal parámetros)
Averigüemos cuáles son local y global variables y que son formal parámetros.
Variables locales
Las variables que se declaran dentro de una función o un bloque se denominan variables locales. Solo pueden ser utilizados por declaraciones que están dentro de esa función o bloque de código. Las variables locales no son conocidas por funciones fuera de las suyas. El siguiente ejemplo usa variables locales. Aquí todas las variables a, byc son locales a la función main ().
package main
import "fmt"
func main() {
/* local variable declaration */
var a, b, c int
/* actual initialization */
a = 10
b = 20
c = a + b
fmt.Printf ("value of a = %d, b = %d and c = %d\n", a, b, c)
}
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:
value of a = 10, b = 20 and c = 30
Variables globales
Las variables globales se definen fuera de una función, normalmente encima del programa. Las variables globales mantienen su valor durante toda la vida útil del programa y se puede acceder a ellas dentro de cualquiera de las funciones definidas para el programa.
Cualquier función puede acceder a una variable global. Es decir, una variable global está disponible para su uso en todo el programa después de su declaración. El siguiente ejemplo usa variables globales y locales:
package main
import "fmt"
/* global variable declaration */
var g int
func main() {
/* local variable declaration */
var a, b int
/* actual initialization */
a = 10
b = 20
g = a + b
fmt.Printf("value of a = %d, b = %d and g = %d\n", a, b, g)
}
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:
value of a = 10, b = 20 and g = 30
Un programa puede tener el mismo nombre para las variables locales y globales, pero el valor de la variable local dentro de una función tiene preferencia. Por ejemplo
package main
import "fmt"
/* global variable declaration */
var g int = 20
func main() {
/* local variable declaration */
var g int = 10
fmt.Printf ("value of g = %d\n", g)
}
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:
value of g = 10
Parámetros formales
Los parámetros formales se tratan como variables locales dentro de esa función y tienen preferencia sobre las variables globales. Por ejemplo
package main
import "fmt"
/* global variable declaration */
var a int = 20;
func main() {
/* local variable declaration in main function */
var a int = 10
var b int = 20
var c int = 0
fmt.Printf("value of a in main() = %d\n", a);
c = sum( a, b);
fmt.Printf("value of c in main() = %d\n", c);
}
/* function to add two integers */
func sum(a, b int) int {
fmt.Printf("value of a in sum() = %d\n", a);
fmt.Printf("value of b in sum() = %d\n", b);
return a + b;
}
Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:
value of a in main() = 10
value of a in sum() = 10
value of b in sum() = 20
value of c in main() = 30
Inicialización de variables locales y globales
Las variables locales y globales se inicializan a su valor predeterminado, que es 0; mientras que los punteros se inicializan en cero.
Tipo de datos | Valor predeterminado inicial |
---|---|
En t | 0 |
float32 | 0 |
puntero | nulo |