Variables y constantes en Go/Golang
Las variables son un concepto clave en la programación, estas nos permiten almacenar información y poder hacer que cambien a lo largo del programa.
Mirando la parte mas técnica, decimos que estas tienen asignada una posición de memoria de almacenamiento y esta vinculada a un nombre, este ultimo es el que nosotros como programadores usamos para hacer referencia a la variable y poder usarla.
Pensemos en que tenemos que contar las personas que ingresan y salen de un aeropuerto, para eso podríamos tranquilamente generar una variable contador e incrementarla cada vez que contemos una persona y decrementarla cada vez que salen.
contadorPersonas := 0
Podemos pensar que el valor “0” esta vinculado a un nombre que es contadorPersonas, si nosotros llamamos a contadorPersonas automáticamente nos mostrara 0.
:= es la forma corta de declarar y asignar valor a una variable.
Go automáticamente infiere el tipo de dato y le asigna en este caso un tipo
int
Miremos como podemos imprimir el valor 0 por consola.
Código
package main
import "fmt"
func main() {
contadorPersonas := 0
fmt.Println(contadorPersonas)
}
Salida
0
Si bien veremos expresiones matemáticas mas adelante, podemos realizar cualquiera de ella a la hora de imprimir algo por consola, por ejemplo sumemos uno al contadorPersonas.
Código
package main
import "fmt"
func main() {
contadorPersonas := 0
fmt.Println(contadorPersonas + 1)
}
Salida
1
Otra forma de realizar la misma operación seria directamente en la declaración de la variable, es decir declarar y asignar un valor al mismo tiempo/linea y que este sea el resultado de la operación.
Código
package main
import "fmt"
func main() {
contadorPersonas := 0 + 1
fmt.Println(contadorPersonas)
}
Salida
1
Las variables no solo almacenan valores enteros, podemos utilizarlas para guardar nombres o cualquier tipo de información que consideremos necesaria y que vaya a cambiar a lo largo del tiempo.
package main
import "fmt"
func main() {
nombre := "Francisco" // String
edad := 22 // Integer
peso := 80.25 // Float
estado := 10 > 5 // Boolean
// Y mas...
}
- String
- Integer
- Float
- Boolean
Son tipos de datos, al final de la lectura les dejo un articulo donde podrás encontrar todos los tipos de datos disponibles en Go.
Declaremos variables
Si bien arriba declaramos y asignamos valores a las variables, tenemos casos en los cuales el tipo de dato de una variable debe ser ESTRICTAMENTE uno, por ejemplo la edad, nadie puede tener una edad de tipo Float.
Esto es muy simple de hacer, siempre que necesitemos declarar un tipo de dato tenemos que poner el mismo seguido al nombre de la variable.
var edad int //Variable edad de tipo Integer
var edad int = 22 // Variable tipo Integer con asignación
También podemos asignarle un valor a esta variable mediante el signo igual.
edad = 22
Recordemos algo importante, si nosotros no indicamos un tipo de dato a la variable, automáticamente Go lo decide por nosotros.
Ahora miremos que pasa si nosotros tratamos de asignar un tipo de dato que no coincide con el de la variable, nosotros en el código de arriba tenemos declarada la variable edad de tipo Integer y vamos a tratar de asignarle un valor String.
Código
edad = "Juan"
Salida
cannot use "Juan" (type untyped string) as type int in assignment
Estos errores son producidos en tiempo de compilación, por lo cual tenemos que tener cuidado con los valores a la hora de trabajar con ellos.
Todos los tipos de datos que tenemos en Go tienen un valor llamado Zero Value o valor por defecto.
Código
package main
import "fmt"
func main() {
var nombre string
var edad int
var dinero float64
var estadoCivil bool
}
Si nosotros imprimimos estas variables por consola obtendremos su Zero Value.
Salida
var nombre string = ""
var edad int = 0
var dinero float64 = 0
var estadoCivil bool = false
Si venimos del mundo de JavaScript estos valores serian el famoso undefined o valor no definido.
Dentro de todo este mundo de las variables, es bueno saber las reglas y los estilos que se acostumbran en Go:
- Las variables SIEMPRE son una sola palabra, es decir no podemos tener espacios en el nombramiento de las mismas.
- Nunca podemos empezar el nombre de una variable con un numero pero si pueden contener uno en el nombramiento.
- Podemos separar nombres mediante guiones bajos o nombrar con camelCase.
- nombre es distinto que NOMBRE, es decir Go distingue mayúscula de minúscula.
- Si declaramos una variable con su primera letra en Mayúscula indicamos a Go que esta es accesible por fuera del package en el cual esta declarada, es decir podríamos acceder a ella desde cualquier otro package.
Asignación múltiple en una linea
Go nos permite ahorrar tiempo y líneas de código, permitiendo declarar y asignar en la misma linea múltiples variables y valores.
Código
edad,nombre,apellido = 22, "Francisco", "Suarez"
fmt.Println(edad)
fmt.Println(nombre)
fmt.Println(apellido)
Salida
22
Francisco
Suarez
Alcance de variables
Dentro de la programación tenemos variables que son locales y otras que son globales, esto hace referencia donde podemos usar una variable y desde donde podemos acceder a ella.
package main
import "fmt"
var variableGlobal = "Alcance global"
func holaMundo(){
mensaje := "Hola mundo"
fmt.Println(mensaje)
}
func main() {
holaMundo()
fmt.Println(variableGlobal)
}
En este caso variableGlobal es accesible desde cualquier parte del programa, y mensaje solo es accesible dentro de la función holaMundo.
Constantes
Las constantes son y cumplen las mismas reglas que las variables, solo que como su nombre indica no pueden cambiar es algo constante.
Para declarar una constante usamos la palabra reservada const
seguido del nombre un signo igual y el valor de la constante.
const dni = 41999222
fmt.Println(dni)// Salida
41999222
En el caso que nosotros quisiéramos modificar una constante nos marcara por consola un error diciendo.
cannot assign to dni (declared const)
Por defecto una constante es de tipo untyped, para solucionar esto podemos especificar un tipo como hacemos con las variables.
const dni int = 41999222
🕹Recursos:
Espero que les sirva y puedan seguir aprendiendo Go/Golang!
Muchas gracias por leer!