🐹 Go

Introducción a Go: historia, características, aplicación en Go

¿Qué es y para qué sirve?

Imagina que estás construyendo una casa con bloques Lego. Hay bloques que simplemente se colocan uno sobre otro, como un lenguaje de programación simple. Y hay bloques que además se enganchan firmemente para que la casa no se derrumbe, incluso si le cae una pelota. Go (o Golang) es como un "Lego súper resistente" para programadores. Fue creado en la empresa Google en 2009, porque los programadores estaban cansados de esperar a que sus programas tardaran mucho en iniciarse o se rompieran bajo una gran carga de trabajo.

¿Para qué necesitas conocer Go? Imagina que escribes un programa para un juego en línea donde juegan un millón de personas al mismo tiempo. En Python o JavaScript, ese programa podría empezar a "ir lento" o fallar. Go está diseñado para funcionar de forma rápida y fiable, como un reloj suizo. Se utiliza en grandes proyectos: Docker (programa para ejecutar aplicaciones), Kubernetes (sistema para gestionar programas), así como en los servidores de Telegram y YouTube. Si quieres convertirte en un desarrollador genial que sabe hacer programas rápidos y potentes, Go es tu elección.

Sintaxis y ejemplos de código

Go se ve estricto, pero lógico. Analicemos algunos ejemplos. ¡No te asustes, te explicaré cada línea!

Ejemplo 1: ¡Hola, mundo!

package main // 1. Decimos que este es el programa principal

import "fmt" // 2. Tomamos la biblioteca para mostrar texto

func main() { // 3. Función principal, todo comienza aquí
    fmt.Println("Hello, world!") // 4. Imprimimos texto
}

Comentarios:

  • package main — cada programa en Go comienza indicando el "paquete". main es como la "entrada principal" del programa.
  • import "fmt" — conectamos un conjunto de herramientas ya preparado (biblioteca) para trabajar con texto. fmt es la abreviatura de "format".
  • func main() — la función que se ejecuta primero. Dentro de ella escribimos los comandos.
  • fmt.Println(...) — el comando "imprime la cadena y pasa a una nueva línea". Todo lo que está entre comillas aparecerá en la pantalla.

Ejemplo 2: Variables y matemáticas

package main

import "fmt"

func main() {
    // Declaramos variables
    var age int = 14          // age es un número entero (int)
    var name string = "Ana"   // name es una cadena (string)
    var height float64 = 1.65 // height es un número decimal (float64)

    // Calculamos la edad dentro de 5 años
    futureAge := age + 5 // := es una forma abreviada para nuevas variables

    // Mostramos el resultado
    fmt.Println("Hola,", name)
    fmt.Println("Ahora tienes", age, "años")
    fmt.Println("Dentro de 5 años tendrás", futureAge)
    fmt.Println("Tu altura:", height, "m")
}

Comentarios:

  • var age int = 14 — creamos una variable age de tipo int (número entero) y le asignamos 14.
  • futureAge := age + 5 — una forma abreviada de crear una variable. Go deduce que futureAge también es un número entero.
  • fmt.Println puede imprimir varias cosas a la vez separadas por comas.

Ejemplo 3: Condiciones (if-else)

package main

import "fmt"

func main() {
    var age int = 16

    if age >= 18 { // Si age es mayor o igual a 18
        fmt.Println("¡Eres adulto!")
    } else if age >= 12 { // Sino, si age >= 12
        fmt.Println("¡Eres adolescente!")
    } else { // Sino (todos los demás casos)
        fmt.Println("¡Eres un niño!")
    }
}

Comentarios:

  • if — verifica una condición. Si es verdadera, se ejecuta el código dentro de las llaves {}.
  • else if — otra verificación, si la primera no se cumplió.
  • else — se ejecuta si ninguna condición se cumplió.
  • Observa: en Go no hay paréntesis alrededor de la condición (como en Python), ¡pero las llaves son obligatorias!

Ejemplo 4: Bucle (for)

package main

import "fmt"

func main() {
    // Contamos del 1 al 5
    for i := 1; i <= 5; i++ {
        fmt.Println("Cuenta:", i)
    }

    // Bucle infinito (se detendrá cuando i sea 10)
    i := 0
    for {
        i++
        if i == 10 {
            break // salimos del bucle
        }
    }
    fmt.Println("Bucle terminado, i =", i)
}

Comentarios:

  • for i := 1; i <= 5; i++ — tres partes: valor inicial (i=1), condición (mientras i <= 5), paso (incrementar i en 1).
  • i++ — abreviatura de i = i + 1.
  • break — el comando "para, sal del bucle".
  • En Go no hay bucle while, como en Python. En su lugar, se usa for con una sola condición.

Ejemplo 5: Funciones

package main

import "fmt"

// Función que suma dos números
func add(a int, b int) int {
    return a + b // devolvemos el resultado
}

func main() {
    result := add(5, 3) // llamamos a la función
    fmt.Println("5 + 3 =", result)

    // Se puede llamar varias veces
    fmt.Println("10 + 20 =", add(10, 20))
}

Comentarios:

  • func add(a int, b int) int — declaramos una función con el nombre add. Recibe dos números enteros (a y b) y devuelve un número entero (el último int).
  • return a + b — devolvemos la suma.
  • Las funciones ayudan a no escribir el mismo código muchas veces.

Comparación con Python

Python es como un "lenguaje coloquial": es fácil y rápido de escribir, pero puede ser lento. Go es como un "documento oficial": estricto, pero rápido y fiable. Comparemos: