Variables en Go

Introducción

Una de las características más importantes de Go son las variables, que permiten a los desarrolladores declarar y manipular datos de una manera simple y efectiva.

En este artículo, discutiremos en detalle el uso de las variables en Go, incluyendo los diferentes tipos de variables, el ámbito de las variables, la inicialización y asignación de variables, las constantes, los punteros y las conversiones de tipo.

Al final del artículo, los lectores tendrán una comprensión clara y completa de cómo usar variables en Go para crear programas efectivos y eficientes.

¿Qué es una variable en Go?

Una variable en Go es una entidad que se utiliza para almacenar un valor en memoria, que puede ser accedido y modificado a lo largo de la ejecución del programa.

En Go, las variables se utilizan para representar información, como números, cadenas de texto, booleanos, y otros tipos de datos más complejos, como estructuras y maps.

Las variables en Go tienen un nombre que se utiliza para referirse a ellas en el código, y un tipo de dato que define el tipo de valor que la variable puede almacenar.

Declarar variables en Go

Cuando se declara una variable en Go, se reserva un espacio en memoria para el valor correspondiente a la variable. Luego, se pueden asignar valores a la variable, lo que cambia el valor almacenado en ese espacio de memoria.

La sintaxis para declarar una variable en Go es la siguiente:


var nombre_variable tipo_dato

Lenguaje del código: Go (go)

La palabra var se utiliza para declarar una variable en Go. Después de la palabra var, se especifica el nombre de la variable que se está declarando, seguido de su tipo de dato correspondiente.

Por ejemplo, si deseamos declarar una variable llamada “edad” que almacenará un valor entero, la sintaxis sería la siguiente:


var edad int

Lenguaje del código: Go (go)

También es posible declarar e inicializar una variable en una sola línea de código. En este caso, se utiliza el signo “=” para asignar un valor a la variable. Por ejemplo, si deseamos declarar e inicializar una variable llamada “nombre” con el valor “Juan”, la sintaxis sería la siguiente:


var nombre string = "Juan"

Lenguaje del código: Go (go)

También es posible omitir el tipo de dato al inicializar una variable. En este caso, Go inferirá automáticamente el tipo de dato según el valor inicial.

Por ejemplo, si deseamos declarar e inicializar una variable llamada “promedio” con el valor “7.5”, la sintaxis sería la siguiente:


var promedio = 7.5

Lenguaje del código: Go (go)

Es importante tener en cuenta que en Go, las variables deben ser declaradas antes de ser utilizadas en el código. La declaración de variables en Go incluye tanto el nombre de la variable como su tipo de datos.

Declaración de variables de tipo estático en Go

En Go, el tipo de una variable es estático, lo que significa que el tipo de la variable se define en el momento de la declaración y no puede ser cambiado después.

Cuando se declara una variable en Go, se especifica su tipo de datos, que debe ser un tipo válido de Go, como int, float, string, bool, entre otros. Por ejemplo, para declarar una variable de tipo entero en Go, se utiliza la siguiente sintaxis:


var edad int = 25

Lenguaje del código: Go (go)

En este ejemplo, la variable edad es de tipo int y se inicializa con el valor 25. Es importante tener en cuenta que, en Go, la inicialización de una variable es opcional y se puede hacer en una línea separada después de la declaración.

Por ejemplo:


var edad int
edad = 25

Lenguaje del código: Go (go)

En este ejemplo, la variable edad se declara primero como una variable de tipo int, y luego se le asigna el valor 25 en una línea separada.

Declarar el tipo de una variable estática en Go tiene varias ventajas, como una mejor legibilidad del código y una mayor seguridad al momento de manipular los datos.

Al definir el tipo de una variable desde el principio, se evitan errores comunes que se presentan en otros lenguajes de programación, como las conversiones de tipo accidentales.

Declaración de variables por Inferencia de tipo en Go

Aunque en Go el tipo de una variable se define estáticamente en el momento de la declaración, existe una característica llamada inferencia de tipo que permite omitir la declaración explícita del tipo de la variable y dejar que el compilador infiera el tipo de datos en función del valor asignado.

La inferencia de tipo se realiza mediante el uso del operador :=, que se utiliza para declarar e inicializar una variable al mismo tiempo, sin necesidad de especificar el tipo de datos.

Por ejemplo, el siguiente código utiliza la inferencia de tipo para declarar una variable de tipo entero:


numero := 42

Lenguaje del código: Go (go)

En este ejemplo, el tipo de la variable numero es inferido por el compilador de Go en función del valor asignado (42), lo que resulta en una variable de tipo int.

La inferencia de tipo puede ser especialmente útil cuando se trabaja con tipos de datos complejos, como estructuras y slices, donde la declaración explícita del tipo puede ser engorrosa.

Por ejemplo:


// Declaración explícita del tipo
var persona struct {
    nombre string
    edad   int
    altura float64
}

// Inferencia de tipo
persona := struct {
    nombre string
    edad   int
    altura float64
}{
    nombre: "Juan",
    edad:   25,
    altura: 1.75,
}

Lenguaje del código: Go (go)

En este ejemplo, se utiliza la inferencia de tipo para declarar una variable de tipo estructura sin tener que escribir la declaración explícita del tipo en una línea separada.

Es importante tener en cuenta que, aunque la inferencia de tipo puede hacer que el código sea más conciso y fácil de leer, también puede hacer que el código sea menos legible en algunos casos.

Por esta razón, se recomienda utilizar la inferencia de tipo con moderación y siempre asegurarse de que el código sea fácil de entender para otras personas que puedan leerlo.

Cómo utilizar variables en Go

Una vez declaradas las variables, se pueden utilizar en el código para realizar operaciones matemáticas, concatenar cadenas de texto, evaluar condiciones, entre otros. Por ejemplo:


// Imprimir el valor de una variable
fmt.Println("Edad:", edad)

// Realizar una operación matemática con variables
area := altura * 10
fmt.Println("Área:", area)

// Concatenar cadenas de texto con variables
mensajeDeSaludo := mensaje + ", " + nombre
fmt.Println(mensajeDeSaludo)

// Evaluar una condición con una variable booleana
if esMayorDeEdad {
   fmt.Println("Es mayor de edad")
} else {
   fmt.Println("Es menor de edad")
}

Lenguaje del código: Go (go)

Variables globales y locales en Go

En Go, las variables se pueden declarar como globales o locales.

Variables globales

Las variables globales se declaran fuera de cualquier función y están disponibles en todo el programa. Pueden ser accedidas y modificadas desde cualquier parte del código.

Se declaran utilizando la sintaxis var nombre_tipo.

Por ejemplo:


// Declarar una variable global de tipo entero
var edad int = 28

func main() {
   // Acceder a la variable global
   fmt.Println("Edad:", edad)
}

Lenguaje del código: Go (go)

En este ejemplo, la variable edad se declara como una variable global y se inicializa con el valor 28. La función main puede acceder a esta variable y mostrar su valor en la consola.

Variables locales

Por otro lado, las variables locales se declaran dentro de una función y están disponibles solo dentro de esa función. No se pueden acceder ni modificar desde fuera de la función.

Se declaran utilizando la sintaxis var nombre_tipo = valor o nombre := valor.

Por ejemplo:


func main() {
   // Declarar una variable local de tipo entero
   var cantidad int = 10

   // Declarar una variable local sin especificar el tipo de dato
   nombre := "Juan"

   // Mostrar el valor de las variables locales
   fmt.Println("Cantidad:", cantidad)
   fmt.Println("Nombre:", nombre)
}

Lenguaje del código: Go (go)

En este ejemplo, la variable cantidad se declara como una variable local de tipo entero con el valor 10, y la variable nombre se declara como una variable local de tipo cadena de texto con el valor “Juan”.

Estas variables solo están disponibles dentro de la función main y no se pueden acceder ni modificar desde fuera de ella.

IMPORTANTE: Es importante tener en cuenta que las variables locales tienen prioridad sobre las variables globales cuando se utilizan en una función con el mismo nombre. Sí se declara una variable local con el mismo nombre que una variable global, la variable local oculta a la global dentro de la función.

Nombrar variables: reglas y estilos

En Go, hay algunas reglas y convenciones a seguir al nombrar variables:

  1. Los nombres de las variables deben comenzar con una letra o un guión bajo.
  2. Los nombres de las variables deben ser únicos y descriptivos.
  3. No se pueden utilizar palabras clave de Go como nombres de variables.
  4. Se pueden utilizar letras mayúsculas o minúsculas para los nombres de las variables.
  5. Los nombres de las variables deben tener una longitud significativa y evitar acrónimos o abreviaciones que no sean claros.

Además de estas reglas, también existen algunas convenciones de estilo que se utilizan en Go para nombrar variables:

  1. Los nombres de las variables deben ser camelCase, lo que significa que cada palabra después de la primera comienza con una letra mayúscula, por ejemplo: nombreDeUsuario.
  2. Los nombres de las variables públicas (que se utilizan en otros paquetes) deben comenzar con una letra mayúscula. Por ejemplo, NombreDeUsuario en lugar de nombreDeUsuario.
  3. Las variables que contienen una sola letra se pueden utilizar para bucles, como i, j, k.

A continuación, te presento algunos ejemplos de nombres de variables utilizando estas reglas y convenciones de estilo:


// Variables con nombres descriptivos y en camelCase
var edadDeUsuario int
var nombreDeUsuario string
var esMayorDeEdad bool

// Variables públicas que comienzan con letra mayúscula
var ColorFondo string

// Variables para bucles con nombres de una sola letra
for i := 0; i < len(datos); i++ {
   // código aquí
}

Lenguaje del código: Go (go)

Siguiendo estas reglas y convenciones de estilo al nombrar variables, el código será más fácil de leer, mantener y entender por otros programadores.

Referencias

Aquí hay algunas referencias que pueden ser útiles para aprender más sobre las variables en Go: