Aprende Go (Golang)
Un curso online de Go gratis e interactivo. Escribes Go en cada lección, con pistas de IA cuando la concurrencia se pone rara, y un certificado gratis al terminar.
22,997+ codders inscritos
284 lecciones256 retos1,839 preguntas de quiz
- Apto para principiantes
Ayuda de codificación con IA
Lecciones interactivas prácticas
Narración de audio en cada lección
Cuestionarios para poner a prueba tu conocimiento
Certificado gratuito de finalización
Programa
Sección 1
Fundamentos
Empezar secciónEmpezarExpandirContraerConstruye una base sólida con conceptos esenciales y habilidades básicasIntroducción a Go
4 lecciones423- 01¿Qué es Go?Reto
- 02Hola MundoRetoQuiz
- 03PrintlnRetoQuiz
- 04Comentarios en GoRetoQuiz
Variables y tipos de datos básicos
10 lecciones1069- 01¿Qué es una variable?RetoQuiz
- 02Inferencia de tipos con `:=`RetoQuiz
- 03Enteros (int)RetoQuiz
- 04Números de punto flotanteRetoQuiz
- 05BooleanosRetoQuiz
- 06StringsRetoQuiz
- 07Valores ceroRetoQuiz
- 08ConstantesRetoQuiz
- 09Convenciones de nomenclaturaRetoQuiz
- 10Resumen - Variables y tiposReto
Operadores básicos
7 lecciones744- 01Operadores aritméticosRetoQuiz
- 02Operador de divisiónRetoQuiz
- 03El operador móduloRetoQuiz
- 04Operador de asignaciónRetoQuiz
- 05Operadores de asignación compuestaRetoQuiz
- 06Incremento y decrementoRetoQuiz
- 07Resumen - CálculosReto
Operadores de comparación y lógicos
7 lecciones742- 01Operadores de comparación - Parte 1RetoQuiz
- 02Operadores de comparación - Parte 2RetoQuiz
- 03Operador lógico ANDRetoQuiz
- 04Operador lógico ORRetoQuiz
- 05Operador lógico NOTRetoQuiz
- 06Conceptos básicos de precedencia de operadoresRetoQuiz
- 07Resumen: Realizar comparacionesReto
Entrada y salida básica
5 lecciones532- 01Salida con formatoRetoQuiz
- 02Verbos de formatoRetoQuiz
- 03Impresión de tiposRetoQuiz
- 04Obtener entrada básica del usuarioRetoQuiz
- 05Resumen: Entrada y salidaReto
Flujo de control: Condicionales
10 lecciones1069- 01La sentencia `if`RetoQuiz
- 02La palabra clave `else`RetoQuiz
- 03La palabra clave `else if`RetoQuiz
- 04Sombreado de variables en `if`RetoQuiz
- 05Inicialización de variablesRetoQuiz
- 06La sentencia `switch`RetoQuiz
- 07`switch` con expresionesRetoQuiz
- 08`switch` sin expresiónRetoQuiz
- 09La palabra clave `fallthrough`RetoQuiz
- 10Resumen: Toma de decisionesReto
Flujo de control: Bucles
7 lecciones743- 01Explicación del bucle `for`RetoQuiz
- 02Bucle `for` - BásicoRetoQuiz
- 03Bucle `for` - Solo condiciónRetoQuiz
- 04La palabra clave `break`RetoQuiz
- 05La palabra clave `continue`RetoQuiz
- 06Bucles anidadosRetoQuiz
- 07Resumen - Repetición de accionesReto
Funciones
9 lecciones962- 01Comprendiendo las funcionesRetoQuiz
- 02Declaración de una funciónRetoQuiz
- 03Llamada a funcionesRetoQuiz
- 04Parámetros de funciónRetoQuiz
- 05Retorno de un solo valorRetoQuiz
- 06Retorno de múltiples valoresRetoQuiz
- 07Valores de retorno con nombreRetoQuiz
- 08Conceptos básicos del alcance de las funcionesRetoQuiz
- 09Resumen: Creando código reutilizableReto
Punteros
7 lecciones644- 01¿Qué es un puntero?Quiz
- 02Declaración de variables de punteroRetoQuiz
- 03El operador de dirección (Address-Of)RetoQuiz
- 04Desreferenciación de punterosRetoQuiz
- 05Uso de punteros en funcionesRetoQuiz
- 06Punteros NilRetoQuiz
- 07Resumen: Entendiendo los punterosReto
Tipos compuestos: Arrays
7 lecciones650- 01Introducción a los ArraysQuiz
- 02Declaración de ArraysRetoQuiz
- 03Inicialización de ArraysRetoQuiz
- 04Acceso a elementos de un ArrayRetoQuiz
- 05Longitud del Array con `len`RetoQuiz
- 06Iterar sobre ArraysRetoQuiz
- 07Arrays multidimensionalesRetoQuiz
Tipos compuestos: Slices
10 lecciones965- 01Introducción a los SlicesQuiz
- 02Declaración de literales de SliceRetoQuiz
- 03Creación de Slices con `make`RetoQuiz
- 04Longitud vs. Capacidad de un SliceRetoQuiz
- 05Acceso a los elementos del SliceRetoQuiz
- 06Añadir elementosRetoQuiz
- 07Slicing de Slices/Arrays existentesRetoQuiz
- 08Iterar sobre SlicesRetoQuiz
- 09Copiar SlicesRetoQuiz
- 10Resumen - Listas dinámicasReto
Tipos compuestos: Mapas
10 lecciones965- 01Introducción a los MapasQuiz
- 02Declaración de literales de mapaRetoQuiz
- 03Creación de mapas con `make`RetoQuiz
- 04Añadir y actualizar clave-valorRetoQuiz
- 05Acceso a los valores del mapaRetoQuiz
- 06Comprobar la existencia de clavesRetoQuiz
- 07Eliminar entradas del mapaRetoQuiz
- 08Longitud del mapaRetoQuiz
- 09Iterar sobre mapasRetoQuiz
- 10Resumen - Almacenamiento clave-valorReto
Tipos compuestos: Structs
8 lecciones854- 01Definición de tipos personalizadosRetoQuiz
- 02Creación de instancias de StructsRetoQuiz
- 03Acceso a campos de StructsRetoQuiz
- 04Punteros a StructsRetoQuiz
- 05Inicialización de StructsRetoQuiz
- 06Structs embebidosRetoQuiz
- 07Structs anónimosRetoQuiz
- 08Resumen - Estructuras de datos personalizadasReto
Manejo básico de errores
8 lecciones858- 01El concepto de erroresRetoQuiz
- 02La interfaz `error`RetoQuiz
- 03Funciones que devuelven erroresRetoQuiz
- 04Comprobación de erroresRetoQuiz
- 05Creación de errores simplesRetoQuiz
- 06Creación de errores con formatoRetoQuiz
- 07Manejo básico de erroresRetoQuiz
- 08Resumen: Manejo de problemasReto
Sección 2
Lógica y Flujo
Empezar secciónEmpezarExpandirContraerDomina la programación avanzada en Go con un enfoque en estructuras de datos y control de flujo. Aprende a trabajar con arrays complejos, colecciones, manejo de errores y gestión del tiempo.Flujo de control avanzado
5 lecciones528- 01Switch con `fallthrough`RetoQuiz
- 02Salir de bucles anidadosRetoQuiz
- 03Continuar un bucle específicoRetoQuiz
- 04La sentencia `goto`RetoQuiz
- 05Repaso: Control de bucles avanzadoReto
Estructuras y Métodos
6 lecciones439- 01Definición de métodos en estructurasRetoQuiz
- 02Receptores de valorRetoQuiz
- 03Receptores de punteroRetoQuiz
- 04Elegir receptoresQuiz
- 05Métodos vs FuncionesQuiz
- 06Resumen - Comportamiento de estructurasReto
Interfaces (Conceptos básicos)
8 lecciones757- 01¿Qué es una interfaz?Quiz
- 02Definir una interfazRetoQuiz
- 03Implementar una interfazRetoQuiz
- 04Uso de tipos de interfazRetoQuiz
- 05Interfaz vacíaRetoQuiz
- 06Aserciones de tipoRetoQuiz
- 07Type SwitchRetoQuiz
- 08Resumen: Formas y comportamientosReto
Proyecto: Lista de tareas sencilla
Proyecto6 lecciones1- 01Configuración del proyectoReto
- 02Añadir una tareaProyecto
- 03Ver todas las tareasProyecto
- 04Completar una tareaProyecto
- 05Eliminar una tareaProyecto
- 06Poniéndolo todo juntoProyecto
Mapas en profundidad
5 lecciones432- 01Mapas de StructsRetoQuiz
- 02Punteros como valores de MapRetoQuiz
- 03Verificación de Maps NilRetoQuiz
- 04Comparación de MapsQuiz
- 05Resumen - Contador de frecuencia de palabrasReto
Go idiomático: Sets
7 lecciones648- 01El modismo de Set en GoQuiz
- 02Crear un SetRetoQuiz
- 03Añadir a un SetRetoQuiz
- 04Comprobar pertenenciaRetoQuiz
- 05Eliminar de un SetRetoQuiz
- 06Iterar sobre un SetRetoQuiz
- 07Resumen: Nombres de usuario únicosReto
Manejo de errores a fondo
7 lecciones650- 01Tipos de error personalizadosRetoQuiz
- 02Envolver errores con `%w`RetoQuiz
- 03Desenvolver con `errors.Is`RetoQuiz
- 04Desenvolver con `errors.As`RetoQuiz
- 05Entendiendo `panic`Quiz
- 06Uso de `recover`RetoQuiz
- 07Repaso - División seguraReto
Proyecto: Inventario simple
Proyecto6 lecciones1- 01Descripción general del proyectoReto
- 02Verificar el stockProyecto
- 03Añadir un nuevo artículoProyecto
- 04Actualizar la cantidad de stockProyecto
- 05Generar un informeProyecto
- 06Poniéndolo todo juntoProyecto
Paquetes y Ámbito
7 lecciones550- 01¿Qué es un paquete?Quiz
- 02Exportado vs. No exportadoRetoQuiz
- 03Crear un paquete simpleRetoQuiz
- 04Alias de paquetesRetoQuiz
- 05El identificador en blanco `_`Quiz
- 06La función `init`RetoQuiz
- 07Repaso - Construir una utilidadReto
Trabajando con el tiempo
8 lecciones857- 01Obtener la hora actualRetoQuiz
- 02Crear una hora específicaRetoQuiz
- 03Formatear el tiempoRetoQuiz
- 04Parsing de cadenas de tiempoRetoQuiz
- 05Duración del tiempoRetoQuiz
- 06Aritmética de tiempoRetoQuiz
- 07Sleeping y TickersRetoQuiz
- 08Resumen - Temporizador simpleReto
Desafíos finales
3 lecciones3- 01Lista de contactos básicaReto
- 02Validador de números simpleReto
- 03Colector de elementos únicosReto
Sección 3
Programación Orientada a Objetos
Empezar secciónEmpezarExpandirContraerDescubre cómo organizar el código con clases, objetos y estructuras reutilizablesFundamentos de POO en Go
11 lecciones1189- 01Archivos externosRetoQuiz
- 02Espacio de trabajo y módulos de GoRetoQuiz
- 03Paquetes e importacionesRetoQuiz
- 04Nombres exportados vs. no exportadosRetoQuiz
- 05Introducción a la POO en GoRetoQuiz
- 06Structs como clasesRetoQuiz
- 07Definición de métodos en structsRetoQuiz
- 08Receptores de puntero vs. de valorRetoQuiz
- 09Inicialización de structsRetoQuiz
- 10Funciones constructorasRetoQuiz
- 11Resumen - Calculadora simpleReto
Inmersión profunda en Tipos y Structs
7 lecciones752- 01Tipos básicos y compuestosRetoQuiz
- 02Definiciones de tipos personalizadosRetoQuiz
- 03Etiquetas de StructsRetoQuiz
- 04Structs anónimosRetoQuiz
- 05Structs anidadosRetoQuiz
- 06Valores cero y por defectoRetoQuiz
- 07Repaso - Libreta de contactosReto
Punteros y Memoria
6 lecciones644- 01Fundamentos de punteros en GoRetoQuiz
- 02Punteros a StructsRetoQuiz
- 03Paso por valor vs referenciaRetoQuiz
- 04La función new()RetoQuiz
- 05Garbage Collection en GoRetoQuiz
- 06Resumen - Constructor de Linked ListReto
Interfaces
9 lecciones969- 01Introducción a las interfacesRetoQuiz
- 02Implementación implícitaRetoQuiz
- 03La interfaz como contratoRetoQuiz
- 04Interfaz vacía (any)RetoQuiz
- 05Type AssertionRetoQuiz
- 06Type SwitchRetoQuiz
- 07Composición de interfacesRetoQuiz
- 08Interfaces Stringer y ErrorRetoQuiz
- 09Resumen: Calculadora de figurasReto
Composición sobre herencia
7 lecciones749- 01Por qué Go no tiene herenciaRetoQuiz
- 02Conceptos básicos de incrustación de structsRetoQuiz
- 03Promoción de métodosRetoQuiz
- 04Incrustación de múltiples structsRetoQuiz
- 05Incrustación vs AgregaciónRetoQuiz
- 06Shadowing de métodos incrustadosRetoQuiz
- 07Resumen - Jerarquía de empleadosReto
Polimorfismo en Go
6 lecciones643- 01Polimorfismo mediante interfacesRetoQuiz
- 02Duck Typing en GoRetoQuiz
- 03Reglas de satisfacción de interfacesRetoQuiz
- 04Colecciones polimórficasRetoQuiz
- 05Inyección de dependenciasRetoQuiz
- 06Resumen - Procesador de pagosReto
Encapsulamiento
5 lecciones536- 01Campos exportados vs. no exportadosRetoQuiz
- 02Encapsulamiento a nivel de paqueteRetoQuiz
- 03Métodos Getter y SetterRetoQuiz
- 04Ocultamiento de información en GoRetoQuiz
- 05Resumen - Registros de estudiantesReto
Manejo de Errores y OOP
7 lecciones754- 01La interfaz errorRetoQuiz
- 02Tipos de errores personalizadosRetoQuiz
- 03Envoltura de errores (fmt.Errorf)RetoQuiz
- 04Errores centinelaRetoQuiz
- 05errors.Is() y errors.As()RetoQuiz
- 06Panic, Defer y RecoverRetoQuiz
- 07Resumen - Analizador de archivosReto
Concurrencia y POO
8 lecciones863- 01Fundamentos de GoroutinesRetoQuiz
- 02Channels y comunicaciónRetoQuiz
- 03Channels con buffer vs. sin bufferRetoQuiz
- 04Sentencia SelectRetoQuiz
- 05sync.Mutex y sync.RWMutexRetoQuiz
- 06sync.WaitGroupRetoQuiz
- 07Diseño de estructuras Thread-SafeRetoQuiz
- 08Resumen - Worker PoolReto
Genéricos (Go 1.18+)
6 lecciones645- 01Introducción a los GenéricosRetoQuiz
- 02Parámetros de tipoRetoQuiz
- 03Restricciones de tipoRetoQuiz
- 04Structs genéricosRetoQuiz
- 05Solución alternativa para métodos genéricosRetoQuiz
- 06Resumen - Colección genéricaReto
Biblioteca estándar y POO
6 lecciones644- 01io.Reader e io.WriterRetoQuiz
- 02Interfaz sort.InterfaceRetoQuiz
- 03Interfaz fmt.StringerRetoQuiz
- 04encoding/json con StructsRetoQuiz
- 05Interfaz http.HandlerRetoQuiz
- 06Repaso - Modelos de REST APIReto
Conceptos avanzados de POO
6 lecciones655- 01Patrón Functional OptionsRetoQuiz
- 02Patrón Builder en GoRetoQuiz
- 03Encadenamiento de métodosRetoQuiz
- 04Alias de tipos vs. definicionesRetoQuiz
- 05Fundamentos de ReflectionRetoQuiz
- 06Descripción general de generación de códigoRetoQuiz
Patrones de diseño - Parte 1
6 lecciones651- 01Introducción a los patrones de diseñoRetoQuiz
- 02Patrón SingletonRetoQuiz
- 03Patrón FactoryRetoQuiz
- 04Patrón Abstract FactoryRetoQuiz
- 05Patrón ObserverRetoQuiz
- 06Patrón StrategyRetoQuiz
Patrones de diseño Parte 2
7 lecciones764- 01Patrón CommandRetoQuiz
- 02Patrón AdapterRetoQuiz
- 03Patrón DecoratorRetoQuiz
- 04Patrón Template MethodRetoQuiz
- 05Patrón StateRetoQuiz
- 06Patrón CompositeRetoQuiz
- 07Middleware como DecoratorRetoQuiz
Proyecto: Gestión de bibliotecas
Proyecto7 lecciones1- 01Descripción general y estructura del proyectoReto
- 02Structs de libros y usuariosProyecto
- 03Sistema de préstamosProyecto
- 04Búsqueda con interfacesProyecto
- 05Capa de persistencia JSONProyecto
- 06Interfaz CLI de administraciónProyecto
- 07Pruebas e integraciónProyecto
Desafíos finales
3 lecciones3- 01Plataforma de E-LearningReto
- 02Sistema bancarioReto
- 03Sistema de personajes de juegoReto
Cursos de GO
Cursos prácticos de GO, gratis para empezar en tu navegador.
Desafíos para principiantes - Practica conceptos básicos
PopularPon a prueba tus conocimientos básicos de programación e intenta resolver estos desafíos; usa cualquier lenguaje que quieras. ¡Feliz programación!
Certificado al completar
- 20
- 20
Problemas de programación
PopularPon a prueba tus habilidades de resolución de problemas de programación con los ejercicios de diferentes niveles de dificultad de este curso. Diseñado para programadores con conocimientos previos de la sintaxis básica en cualquier lenguaje de programación.
Certificado al completar
- 32
- 31
Pila - Serie de Estructuras de Datos #1
En este curso, aprenderás sobre la estructura de datos Pila, crearás una Pila desde cero usando tu lenguaje preferido y practicarás desafíos de programación con ella.
- 13
- 6
- 1
Problemas de programación: Volumen 2
Pon a prueba tus habilidades de resolución de problemas de programación con los ejercicios de diferentes niveles de dificultad de este curso. Diseñado para programadores con conocimientos previos de la sintaxis básica en cualquier lenguaje de programación, este curso es una extensión del primer volumen de Problemas de programación.
Certificado al completar
- 25
- 24
Bootcamp de patrones de estrellas
Pon a prueba tus habilidades de resolución de problemas de programación para aprender a imprimir patrones de estrellas que van desde lo simple hasta lo complejo, involucrando diferentes niveles de bucles anidados, sentencias condicionales y cálculos matemáticos.
- 30
- 28
Heaps y Colas de Prioridad - Serie de Estructuras de Datos #7
En este curso, aprenderás sobre la estructura de datos Heap (la base de las colas de prioridad), crearás un MinHeap desde cero usando tu lenguaje preferido y practicarás desafíos de programación con él.
Certificado al completar
- 14
- 6
- 1
Por qué aprender Go (Golang) con Coddy
- Escribe y ejecuta código Go real en tu navegador. Sin instalar el toolchain de Go ni configurar GOPATH. Cada lección compila tu programa de Go en el servidor y muestra la salida al instante.
- Go idiomático: packages, structs, slices y maps, interfaces, manejo de errores, goroutines, channels. Los patrones de Go que de verdad usarías para construir backends y CLIs.
- Las pistas de IA te ayudan a depurar tu código Go y a desenredar bugs con goroutines y channels sin arruinarte la respuesta, para que el modelo de concurrencia te haga clic en vez de confundirte.
- Certificado gratis de Golang al terminar. Una señal creíble para puestos de backend, infraestructura cloud y DevOps, donde el dominio de Go es cada vez más esperado.