
Go es uno de esos lenguajes que no se interpone en tu camino. Cuando preparé esta charla para Pereira Tech Talks, lo que quería transmitir no era solo la sintaxis o las características — era por qué Go se siente diferente. Es un lenguaje que confía en que podés escribir código claro sin abrumarte con opciones.
¿Qué es Go?
Go es open source, compilado y multiplataforma. Con go build generas binarios para distintas arquitecturas sin cambiar código. La sintaxis es tipo C pero con la ergonomía de lenguajes interpretados — menos ceremonias, más productividad.
package main
import "fmt"
func main() {
fmt.Printf("Hello World")
}
Go nació en 2007 de la mano de Robert Griesemer (JVM, V8), Rob Pike (UNIX, UTF-8) y Ken Thompson (B, C, UNIX). Google lo lanzó como open source en 2009; la versión 1.0 llegó en 2012. El equipo no buscaba reemplazar Java o C++, sino crear un lenguaje que les diera las ventajas que necesitaban para sistemas modernos: compilación rápida, concurrencia nativa y despliegue en un solo binario.
¿Por Qué Go?
- Fácil de aprender — El lenguaje es pequeño y consistente.
- Moderno — Pensado para sistemas que requieren alto rendimiento y alta concurrencia.
- Librería estándar —
net/http,database/sql,encoding,testing, encriptación — obtienes mucho sin dependencias externas. - Quién lo usa — Canonical, Cloudflare, Uber, Disqus, Digital Ocean, Facebook, Netflix.
Y sí, la mascota Gopher es linda. Eso cuenta.
Lo que cubrí en la charla
Hice demos en vivo desde lo más básico hasta ejemplos prácticos:
Fundamentos
- Hello World, entrada estándar, declaraciones de variables
- Tipos:
bool,string,int,float,byte,rune,complex - Funciones con múltiples retornos
- Loops (
fores el único, pero muy flexible), condicionales,switchconfallthrough - Arrays, maps, structs, métodos e interfaces
Concurrencia y Más
- Defer — Ejecutar código al salir del contexto de una función
- Panic y errors — Manejo de errores idiomático
- Pointers — Referencias y desreferenciación
- Goroutines — Concurrencia ligera con
go - Channels — Comunicación entre goroutines
Ejemplos prácticos
- Servidor HTTP con
net/http - Cliente HTTP consumiendo una API (JSON)
- Lectura de archivos con
io/ioutil
Frameworks y Librerías
- Frameworks: Revel, Beego, Martini, Buffalo
- Librerías: Testify, Logrus, pkg/errors, cobra, godog
- Bonus: Ebiten (juegos 2D), WebAssembly
Recursos
- Ver slides
- Go Basics (GitHub) — Código de la charla
- Go oficial
- Rob Pike — Concurrency Is Not Parallelism
- Platzi — Go Básico
Go me enseñó que simplicidad y poder no son opuestos. El lenguaje demostró que podés tener alto rendimiento y alta concurrencia sin sacrificar legibilidad. Ese equilibrio es lo que me hace volver a él una y otra vez.
A seguir construyendo.