Go
Aprende Go de principio a fin. Comienza con paquetes, variables y flujo de control, luego profundiza en structs, interfaces, concurrencia, pruebas, servidores HTTP, bases de datos, genéricos, perfilado y despliegue de binarios reales en producción.
20 lecciones, en orden
- 125 min
Hola, Go
Bienvenido. Si nunca has escrito código, estás en el sitio correcto. Go es un lenguaje de programación, es decir, una forma de darle a un ordenador...
Package mainImportFunc mainFmt.PrintlnGo run - 225 min
Variables y Tipos
En la lección anterior imprimiste un texto fijo. Los programas de verdad necesitan recordar cosas que cambian: el nombre de un cliente, un precio, si...
Var declarationShort declaration :=IntFloat64StringBool+2 - 330 min
Flujo de control: if y for
Hasta ahora, todos los programas que has escrito se ejecutan de arriba abajo, una línea detrás de otra, sin tomar ninguna decisión por el camino. Los...
IfElse ifElseFor loopFor as whileInfinite for+2 - 430 min
Funciones
Todos los programas que has escrito hasta ahora vivían dentro de func main(). Eso vale para una docena de líneas, pero los programas reales necesitan...
Func keywordParametersReturn valuesMultiple return valuesNamed return valuesBlank identifier - 535 min
Slices y Maps
Todas las variables que has usado hasta ahora guardan exactamente un valor: un nombre, una edad, un precio. La mayoría de los problemas reales van de...
Slice literalAppendLenIndexingRangeMap literal+2 - 635 min
Structs y Pointers
Hasta ahora, todas las variables que has escrito en este curso contienen un valor suelto: un número, una cadena, un slice. Los datos de verdad rara...
Struct definitionField accessZero values for structsPointer types& and * operatorsPointer receivers vs value receivers+1 - 735 min
Methods e Interfaces
La lección anterior te enseñó a agrupar campos relacionados en una struct, pero una struct por sí sola solo guarda datos: no tiene comportamiento. Si...
Method declarationReceiver typesPointer vs value receiversInterface definitionImplicit interface satisfactionSmall interfaces+1 - 835 min
Manejo de errores
Ya has escrito if err != nil más de una vez en este curso sin pararte a preguntar qué es err en realidad ni de dónde sale. Las funciones fallan...
Error interfaceFmt.Errorf with %wErrors.IsErrors.AsCustom error typesPanic vs error+1 - 935 min
Modules y estructura del proyecto
Todos los programas que has escrito en este curso hasta ahora han vivido en un único fichero que podías ejecutar con un solo comando. Los proyectos...
Go mod initGo.mod and go.sumImport pathsPackage vs moduleInternal/ folderCmd/ layout+1 - 1040 min
Pequeño proyecto final de CLI
Hasta ahora, todos los programas que has escrito llevaban sus datos de entrada metidos en el propio código. Si querías sumar otros números, editabas...
Os.ArgsStrconv.AtoiError handling with if err != nilOs.ExitGo buildPutting it together - 1140 min
Un recorrido por la biblioteca estándar
En el aprendizaje de cualquier lenguaje llega un momento en que dejas de preguntarte cómo se escribe un bucle y empiezas a preguntarte cómo se lee un...
FmtStringsStrconvTimeOsBufio+1 - 1240 min
Pruebas y benchmarks
Escribiste una función, ejecutaste el programa, viste la respuesta correcta y seguiste adelante. Una semana después cambias algo cercano y la función...
Go testTesting.TTable-driven testsT.Run subtestsTesting.B benchmarks_test.go file naming+1 - 1340 min
Goroutines y channels
Tu programa tiene que descargar veinte archivos. Escrito de la forma habitual, descarga el primero, espera, descarga el segundo, espera, y así...
The go keywordGoroutine lifetimeUnbuffered channelsBuffered channelsSend and receiveRange over channel+1 - 1445 min
Patrones de concurrencia
Las goroutines y los canales son materia prima, como la madera y los tornillos. Saber qué son no te dice cómo construir una silla. En la práctica,...
Select statementContext.Context for cancellationSync.WaitGroupSync.MutexWorker pool patternFan-out fan-in idea - 1535 min
Generics
Escribes una función que encuentra el número más grande de un slice de int. Luego necesitas una para float64, así que la copias y cambias dos...
Type parameters with [T any]ConstraintsComparableTilde approximation ~intGeneric Map and FilterWhen generics help, when they do not - 1645 min
Servidores HTTP
En la mayoría de lenguajes, "escribir un servicio web" empieza por elegir un framework, y la elección importa, porque el framework decide cómo...
Net/httpHttp.HandleFuncHttp.ServerJSON responsesRequest routingMiddleware via http.Handler wrapping+1 - 1745 min
Bases de datos con database/sql
Todos los programas que has escrito hasta ahora olvidan cuanto sabían en el momento en que terminan. Eso está bien para una herramienta que...
Database/sql packageDriver importsSql.Open and sql.DB poolExec vs Query vs QueryRowPrepared statementsScanning rows+1 - 1840 min
Rendimiento y perfilado
En algún momento alguien dice que el servicio va lento, abres el código y ves enseguida el bucle que tiene que ser el culpable. Lo reescribes, queda...
Go test -benchPprof CPU and heap profilesEscape analysis with -gcflags=-mAvoiding unnecessary allocationsPreallocating slicesSync.Pool intuition - 1940 min
Patrones de diseño en Go
Los programas crecen. Un archivo que tenía todo el sentido del mundo con doscientas líneas se convierte en un sitio donde un cambio pequeño rompe...
Functional options patternRepository patternDependency injection via interfacesContext propagation through call stacksConstructor functions - 2045 min
Despliegue y producción
Hay una distancia entre un programa que funciona en tu portátil y un programa que estás dispuesto a dejar corriendo mientras duermes. Recorrerla no...
CGO_ENABLED=0 static binariesCross-compile with GOOS and GOARCHGraceful shutdown with http.Server and signal.NotifyContextMinimal Dockerfile with scratch or distrolessReading config from environment variables
Aprende Go en tu idioma
Cada lección, examen y respuesta del tutor aparece en tu idioma. El tutor de IA responde en el idioma en que le hablas.
Roles that use Go
See how hiring teams interview engineers on Go, in production-like environments.
Backend Engineer (Go, Rust, Java)
Hire backend engineers in real services with real databases, real concurrency and real latency budgets. Live or take-home, fully recorded.
See the interviewDistributed Systems Engineer
Hire distributed systems engineers in workspaces with real Kafka, real consensus and real partition tooling. Live or take-home, fully recorded.
See the interviewPlatform Engineer
Hire platform engineers who reduce friction for every team. Real golden-path templates, real internal CLIs, real service onboarding flows. We record every step.
See the interview