Recorrido
Aprende Go (Golang)
Aprende Go (Golang) desde cero con un curso online gratis e interactivo. Domina variables, condicionales, bucles, funciones, estructuras de datos y organización de proyectos con retos prácticos, proyectos reales, pistas de IA y un certificado al terminar.
20,350+ codders inscritos
Este recorrido incluye
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
3 secciones284 lecciones256 retos1,839 preguntas de quiz01Sección 1
Fundamentos
Construye una base sólida con conceptos esenciales y habilidades básicasEMPEZAR A APRENDERIntroducción a Go
4 lecciones423- 01¿Qué es Go?Reto
- 02Hola MundoRetoQuizAudio
- 03PrintlnRetoQuizAudio
- 04Comentarios en GoRetoQuizAudio
Variables y tipos de datos básicos
10 lecciones1069- 01¿Qué es una variable?RetoQuizAudio
- 02Inferencia de tipos con `:=`RetoQuizAudio
- 03Enteros (int)RetoQuizAudio
- 04Números de punto flotanteRetoQuizAudio
- 05BooleanosRetoQuizAudio
- 06StringsRetoQuizAudio
- 07Valores ceroRetoQuizAudio
- 08ConstantesRetoQuizAudio
- 09Convenciones de nomenclaturaRetoQuizAudio
- 10Resumen - Variables y tiposReto
Operadores básicos
7 lecciones744- 01Operadores aritméticosRetoQuizAudio
- 02Operador de divisiónRetoQuizAudio
- 03El operador móduloRetoQuizAudio
- 04Operador de asignaciónRetoQuizAudio
- 05Operadores de asignación compuestaRetoQuizAudio
- 06Incremento y decrementoRetoQuizAudio
- 07Resumen - CálculosReto
Operadores de comparación y lógicos
7 lecciones742- 01Operadores de comparación - Parte 1RetoQuizAudio
- 02Operadores de comparación - Parte 2RetoQuizAudio
- 03Operador lógico ANDRetoQuizAudio
- 04Operador lógico ORRetoQuizAudio
- 05Operador lógico NOTRetoQuizAudio
- 06Conceptos básicos de precedencia de operadoresRetoQuizAudio
- 07Resumen: Realizar comparacionesReto
Entrada y salida básica
5 lecciones532- 01Salida con formatoRetoQuizAudio
- 02Verbos de formatoRetoQuizAudio
- 03Impresión de tiposRetoQuizAudio
- 04Obtener entrada básica del usuarioRetoQuizAudio
- 05Resumen: Entrada y salidaReto
Flujo de control: Condicionales
10 lecciones1069- 01La sentencia `if`RetoQuizAudio
- 02La palabra clave `else`RetoQuizAudio
- 03La palabra clave `else if`RetoQuizAudio
- 04Sombreado de variables en `if`RetoQuizAudio
- 05Inicialización de variablesRetoQuizAudio
- 06La sentencia `switch`RetoQuizAudio
- 07`switch` con expresionesRetoQuizAudio
- 08`switch` sin expresiónRetoQuizAudio
- 09La palabra clave `fallthrough`RetoQuizAudio
- 10Resumen: Toma de decisionesReto
Flujo de control: Bucles
7 lecciones743- 01Explicación del bucle `for`RetoQuizAudio
- 02Bucle `for` - BásicoRetoQuizAudio
- 03Bucle `for` - Solo condiciónRetoQuizAudio
- 04La palabra clave `break`RetoQuizAudio
- 05La palabra clave `continue`RetoQuizAudio
- 06Bucles anidadosRetoQuizAudio
- 07Resumen - Repetición de accionesReto
Funciones
9 lecciones962- 01Comprendiendo las funcionesRetoQuizAudio
- 02Declaración de una funciónRetoQuizAudio
- 03Llamada a funcionesRetoQuizAudio
- 04Parámetros de funciónRetoQuizAudio
- 05Retorno de un solo valorRetoQuizAudio
- 06Retorno de múltiples valoresRetoQuizAudio
- 07Valores de retorno con nombreRetoQuizAudio
- 08Conceptos básicos del alcance de las funcionesRetoQuizAudio
- 09Resumen: Creando código reutilizableReto
Punteros
7 lecciones644- 01¿Qué es un puntero?QuizAudio
- 02Declaración de variables de punteroRetoQuizAudio
- 03El operador de dirección (Address-Of)RetoQuizAudio
- 04Desreferenciación de punterosRetoQuizAudio
- 05Uso de punteros en funcionesRetoQuizAudio
- 06Punteros NilRetoQuizAudio
- 07Resumen: Entendiendo los punterosReto
Tipos compuestos: Arrays
7 lecciones650- 01Introducción a los ArraysQuizAudio
- 02Declaración de ArraysRetoQuizAudio
- 03Inicialización de ArraysRetoQuizAudio
- 04Acceso a elementos de un ArrayRetoQuizAudio
- 05Longitud del Array con `len`RetoQuizAudio
- 06Iterar sobre ArraysRetoQuizAudio
- 07Arrays multidimensionalesRetoQuizAudio
Tipos compuestos: Slices
10 lecciones965- 01Introducción a los SlicesQuizAudio
- 02Declaración de literales de SliceRetoQuizAudio
- 03Creación de Slices con `make`RetoQuizAudio
- 04Longitud vs. Capacidad de un SliceRetoQuizAudio
- 05Acceso a los elementos del SliceRetoQuizAudio
- 06Añadir elementosRetoQuizAudio
- 07Slicing de Slices/Arrays existentesRetoQuizAudio
- 08Iterar sobre SlicesRetoQuizAudio
- 09Copiar SlicesRetoQuizAudio
- 10Resumen - Listas dinámicasReto
Tipos compuestos: Mapas
10 lecciones965- 01Introducción a los MapasQuizAudio
- 02Declaración de literales de mapaRetoQuizAudio
- 03Creación de mapas con `make`RetoQuizAudio
- 04Añadir y actualizar clave-valorRetoQuizAudio
- 05Acceso a los valores del mapaRetoQuizAudio
- 06Comprobar la existencia de clavesRetoQuizAudio
- 07Eliminar entradas del mapaRetoQuizAudio
- 08Longitud del mapaRetoQuizAudio
- 09Iterar sobre mapasRetoQuizAudio
- 10Resumen - Almacenamiento clave-valorReto
Tipos compuestos: Structs
8 lecciones854- 01Definición de tipos personalizadosRetoQuizAudio
- 02Creación de instancias de StructsRetoQuizAudio
- 03Acceso a campos de StructsRetoQuizAudio
- 04Punteros a StructsRetoQuizAudio
- 05Inicialización de StructsRetoQuizAudio
- 06Structs embebidosRetoQuizAudio
- 07Structs anónimosRetoQuizAudio
- 08Resumen - Estructuras de datos personalizadasReto
Manejo básico de errores
8 lecciones858- 01El concepto de erroresRetoQuizAudio
- 02La interfaz `error`RetoQuizAudio
- 03Funciones que devuelven erroresRetoQuizAudio
- 04Comprobación de erroresRetoQuizAudio
- 05Creación de errores simplesRetoQuizAudio
- 06Creación de errores con formatoRetoQuizAudio
- 07Manejo básico de erroresRetoQuizAudio
- 08Resumen: Manejo de problemasReto
02Sección 2
Lógica y Flujo
Domina 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.EMPEZAR A APRENDERFlujo 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
03Sección 3
Programación Orientada a Objetos
Descubre cómo organizar el código con clases, objetos y estructuras reutilizablesEMPEZAR A APRENDERFundamentos 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
Por qué aprender Go (Golang) con Coddy
- Curso de Go (Golang) online y gratis: sin instalación, sin configurar herramientas y sin barreras para empezar. Abre el navegador y practica desde la primera lección.
- Lecciones prácticas de Go (Golang) que van más allá de un tutorial: cada concepto viene con un reto para escribir código real y entenderlo haciendo.
- Las pistas de IA te ayudan cuando te bloqueas en un ejercicio de Go (Golang), explicando el siguiente paso sin darte la solución completa.
- Certificado gratis de finalización para compartir en LinkedIn o añadir al CV como prueba de que completaste un curso interactivo de Go (Golang).
Preguntas frecuentes sobre aprender Go (Golang)
¿Go (Golang) es fácil de aprender?
Sí, puedes empezar con Go (Golang) aunque no tengas experiencia previa. Coddy divide los conceptos en ejercicios cortos para que entiendas la sintaxis, practiques variables, condicionales, bucles, funciones, estructuras de datos y organización de proyectos y ganes confianza paso a paso.
¿Cuánto tiempo se tarda en aprender Go (Golang)?
Los fundamentos de Go (Golang) suelen aprenderse en una o dos semanas de práctica diaria. Para sentirte cómodo creando proyectos reales, reserva de uno a tres meses según tu ritmo y tu experiencia previa.
¿Dónde puedo aprender Go (Golang) online gratis?
Coddy ofrece un curso online gratis de Go (Golang) con lecciones, retos de código, cuestionarios y proyectos. No necesitas instalar nada: todo funciona en el navegador.
¿Cómo puedo aprender Go (Golang) rápido?
La forma más rápida es practicar todos los días. En Coddy alternas explicación breve, ejercicio inmediato y feedback con pistas de IA, así que pasas más tiempo escribiendo Go (Golang) que mirando videos largos.
¿Recibo un certificado de Go (Golang) al terminar?
Sí. Al completar el curso de Go (Golang) en Coddy recibes un certificado gratis de finalización que puedes compartir en LinkedIn o añadir a tu currículum.
¿Qué puedo crear después de aprender Go (Golang)?
Después del curso podrás crear scripts útiles, pequeñas apps, automatizaciones, juegos sencillos y proyectos que puedes mostrar en tu portfolio. También tendrás una base sólida para seguir con temas más avanzados.