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,067+ codders inscritos
- 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 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
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
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
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
Heaps y Colas de Prioridad - Serie de Estructuras de Datos #7
NuevoEn 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
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
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.