Introducción a Go – GoLang

Última actualización: 30/12/2022 – Oscar Fernandez

En esta entrada de introducción a Go aprenderás las ventajas de este lenguaje de programación moderno y los conceptos clave que lo convierten en una herramienta muy potente para los desarrolladores.

Introduccion a Go

¿Qué es Go?

Go o Golang es un lenguaje de programación open source de propósito general desarrollado por Google. Proporciona un balance entre tipado estático y dinámico y está basado en la sintaxis de C, por lo que es fácil de leer.

El lenguaje también se caracteriza por especificar algunas reglas como que todas las variables y librerías declaradas deben usarse.

En los últimos tiempos se ha convertido en uno de los lenguajes más populares y deseados en la comunidad de desarrolladores. En su encuesta del 2021, Stack Overflow lo sitúa como el cuarto lenguaje más deseado para desarrollar, como vemos en la imagen.

Encuesta Go Stack Overflow
Golang encuesta Stack Overflow 2021

Ventajas de Go

Go permite implementar con facilidad servicios escalables y eficientes en múltiples áreas, como servicios web, backend, aplicaciones cloud y big data. Una de las ventajas más importantes es su soporte a la concurrencia. También, el tiempo de compilación es muy rápido y no requiere dependencias externas para producir binarios nativos.

Fue diseñado por Google teniendo en mente la eficiencia y escalabilidad necesaria en entornos cloud y clústers compuestos por grandes cantidades de nodos. En estos entornos, es muy importante que no se desperdicien recursos computacionales con ineficiencias del lenguaje.

Hello World en Go

A continuación, tenemos la implementación de un Hello World impreso por pantalla.

package main

import "fmt"

func main() {
    fmt.Println("Hello World")
}

La primera línea declara el paquete en el que se encuentra. Todos los programas en Go deben situarse en un paquete, en este caso tiene el nombre main. Después se importa la librería fmt, encargada de proporcionar formatos de salida.

Por último, se implementa una función llamada main. Esta función es la primera que se invoca en la ejecución del programa. En este caso, usa la librería que hemos importado con la función Println para imprimir la línea Hello World.

Variables y Constantes en Go

Las variables en Go deben tener un tipo específico, que determina el tamaño en memoria y las operaciones que se pueden aplicar. Las constantes o literales se tratan como variables que no se pueden modificar.

// Declaración de una variable entera
var x int = 2

// Declaración de una constante
const pi float64 = 3.14

Punteros en Go

Aprender a usar los punteros es esencial para el desarrollo con Go. Algunas tareas, como las llamadas por referencia, no se pueden usar sin punteros.

Cada variable tiene asignada una dirección en memoria, a la que se puede acceder usando el símbolo &.

// Declaración de una variable entera
var x int = 2

// Dirección en memoria de x
fmt.Println(&x)

Bucles

A diferencia de otros lenguajes, en Go solo hay un tipo de bucle. El mecanismo de iteración es el bucle for. La sintaxis es la siguiente:

i := 1

for i <= 10 {
    fmt.Println(i)
    i++
}

// Podemos simplificar este bucle de la siguiente forma:

for j := 1; j <= 10; j++ {
    fmt.Println(j);
}

Array y Map

Los arrays son las estructuras de datos en las que podemos almacenar elementos del mismo tipo. Los maps son las estructuras de datos que nos permite asociar claves únicas a cada valor. Más adelante, podemos usar la clave para recuperar el valor asociado rápidamente.

La sintaxis en Go de los Arrays es la siguiente:

var numeros[4] int

numeros[0] = 1
numeros[1] = 7
numeros[2] = 10
numeros[3] = 3

// Podemos acceder directamente a cualquier elemento del array
fmt.Println(numeros[1])

// Otra forma de inicializar un array
numeros2 := [4]int { 1, 7, 10, 3 }

// Para imprimir todos los elementos del array usamos un for
for i, value := range numeros2 {
     fmt.Println(value, i)
}

A continuación un ejemplo de Map:

// Creamos un map con clave un string y valores números enteros
edades := make(map[string] int)

// Asignamos al valor 25 la clave "oscarfmdc"
edades["oscarfmdc"] = 25

// Imprimimos el resultado
fmt.Println(edades["oscarfmdc"])

Structs e Interfaces

Las estructuras o Structs en Go son definiciones de variables que nos permiten alojar varios elementos de distintos tipos definidos por el programador. Las interfaces son otro tipo de datos que contienen la definición de funciones que un tipo debe implementar. A continuación se muestra cómo se define un struct:

// Creamos un struct con dos campos
type libro struct {
    paginas int
    precio float64
}

Cursos de Golang, Formación y Siguientes Pasos

Si estás interesado en implementar proyectos con Go, te recomiendo este curso como línea de aprendizaje inicial para que puedas ponerte en marcha cuanto antes. Go es un lenguaje muy demandado, que no te arrepentirás de aprender.

Curso go coursera

Programando con Google Go

Este curso disponible en Coursera sin duda te guiará y acelerará tu aprendizaje paso a paso. Incluye lecciones de concurrencia, testing y ejercicios prácticos con soluciones. Se compone de 3 módulos:

  1. Empezando con Go
  2. Funciones, métodos e interfaces
  3. Concurrencia en Go

Deja una respuesta