Alcance de variables en Go
El alcance es el ámbito en el código fuente donde actúan las constantes, tipos, variables, funciones o paquetes representados por un identificador declarado.
En Go, las variables se pueden declarar en tres lugares:
- Las variables definidas dentro de una función se denominan variables locales.
- Las variables definidas fuera de una función se denominan variables globales.
- Las variables en la definición de una función se denominan parámetros formales.
A continuación, conozcamos en detalle las variables locales, las variables globales y los parámetros formales.
Variables locales
Las variables declaradas dentro del cuerpo de una función se llaman variables locales; su ámbito se limita al cuerpo de la función. Los parámetros y las variables de retorno también son variables locales.
En el siguiente ejemplo, la función main() utiliza las variables locales a, b, c:
Ejemplo
import "fmt"
func main() {
/* Declarar variables locales */
var a, b, c int
/* Inicializar parámetros */
a = 10
b = 20
c = a + b
fmt.Printf ("Resultado: a = %d, b = %d and c = %d\n", a, b, c)
}
El resultado de ejecutar el ejemplo anterior es:
结果: a = 10, b = 20 and c = 30
Variables globales
Las variables declaradas fuera de una función se denominan variables globales. Las variables globales se pueden utilizar en todo el paquete e incluso en paquetes externos (después de ser exportadas).
Las variables globales se pueden usar en cualquier función. El siguiente ejemplo demuestra cómo usar variables globales:
Ejemplo
import "fmt"
/* Declarar variables globales */
var g int
func main() {
/* Declarar variables locales */
var a, b int
/* Inicializar parámetros */
a = 10
b = 20
g = a + b
fmt.Printf("Resultado: a = %d, b = %d and g = %d\n", a, b, g)
}
El resultado de ejecutar el ejemplo anterior es:
结果: a = 10, b = 20 and g = 30
En los programas Go, las variables globales y locales pueden tener el mismo nombre, pero las variables locales dentro de la función tienen prioridad. Ejemplo:
Ejemplo
import "fmt"
/* Declarar variables globales */
var g int = 20
func main() {
/* Declarar variables locales */
var g int = 10
fmt.Printf ("Resultado: g = %d\n", g)
}
El resultado de ejecutar el ejemplo anterior es:
结果: g = 10
Parámetros formales
Los parámetros formales se usan como variables locales de la función. Ejemplo:
Ejemplo
import "fmt"
/* Declarar variables globales */
var a int = 20;
func main() {
/* Declarar variables locales en la función main */
var a int = 10
var b int = 20
var c int = 0
fmt.Printf("En la función main(), a = %d\n", a);
c = sum( a, b);
fmt.Printf("En la función main(), c = %d\n", c);
}
/* Definición de función: sumar dos números */
func sum(a, b int) int {
fmt.Printf("En la función sum(), a = %d\n", a);
fmt.Printf("En la función sum(), b = %d\n", b);
return a + b;
}
El resultado de ejecutar el ejemplo anterior es:
main()函数中 a = 10 sum() 函数中 a = 10 sum() 函数中 b = 20 main()函数中 c = 30
Inicialización de variables locales y globales
Los valores predeterminados de los diferentes tipos de variables locales y globales son:
| Tipo de dato | Valor predeterminado de inicialización |
|---|---|
| int | 0 |
| float32 | 0 |
| pointer | nil |