Volver a los cursos
AI017 Professional

¡Aprende a Programar con Go!

Una introducción práctica y amigable para principiantes al lenguaje de programación Go. El curso está estructurado en lecciones pequeñas y manejables con un tema de exploración espacial, que cubre programación imperativa, tipos, funciones, métodos, colecciones, estado y concurrencia.

4.9
24.0h
749 estudiantes
0 me gusta
Inteligencia Artificial
Comenzar a aprender

Descripción del curso

📚 Resumen del contenido

Una introducción práctica y amigable para principiantes al lenguaje de programación Go. El curso está estructurado en lecciones pequeñas y manejables con un tema de exploración espacial, cubriendo programación imperativa, tipos, funciones, métodos, colecciones, estado y concurrencia.

Descubre el placer de programar con Go a través de lecciones breves y siete proyectos finales centrados en viajes espaciales.

Autor: Nathan Youngman, Roger Peppé

Agradecimientos: Jennifer Stout, Marina Michaels, Matthew Merkes, Joel Kotarski, Aleksandar Dragosavljević, Renée French, Olga Shalakhina, Erick Zelaya, April Milne, Monica Kamsvaag.

🎯 Objetivos de aprendizaje

  1. Definir el lenguaje de programación Go y sus casos de uso principales.
  2. Explicar el papel del compilador de Go y sus ventajas frente a los intérpretes.
  3. Navegar por el Playground de Go para escribir, compilar y ejecutar código.
  4. Estructurar correctamente el código Go usando el estilo obligatorio de "una sola llave verdadera" para evitar errores de sintaxis.
  5. Gestionar datos mediante diversas técnicas de declaración de variables y operadores de asignación aritmética.
  6. Generar números pseudoaleatorios e implementar lógica condicional usando bifurcaciones y operadores lógicos.
  7. Declarar y formatear variables de punto flotante usando float32 y float64 con ancho y precisión específicos.
  8. Identificar y mitigar errores causados por inexactitudes de punto flotante y desbordamiento de enteros.
  9. Utilizar el paquete big y constantes sin tipo para manejar números que superan los límites estándar de bits.
  10. Definir e invocar funciones usando parámetros, argumentos y sintaxis variádica.

🔹 Lección 1: Despegando hacia la órbita

Resumen: Esta lección presenta Go, el lenguaje de programación contemporáneo para la computación en la nube. Los estudiantes aprenderán la diferencia fundamental entre el carácter compilado de Go y los lenguajes interpretados, cómo usar el Playground de Go para experimentar de inmediato y la estructura básica de un programa Go que incluye paquetes y la función main.

Resultados de aprendizaje:

  • Definir el lenguaje de programación Go y sus casos de uso principales.
  • Explicar el papel del compilador de Go y sus ventajas frente a los intérpretes.
  • Navegar por el Playground de Go para escribir, compilar y ejecutar código.

🔹 Lección 2: Lógica de Control de Misión

Resumen: Esta lección introduce los bloques fundamentales de la programación en Go, centrándose en cómo estructurar el código y controlar su ejecución. Los estudiantes aprenderán el estilo "una sola llave verdadera", puntos de entrada de programas, avanzarán a cortesías de declaración de variables y operadores matemáticos, y finalizarán con lógica de toma de decisiones usando booleanos, comparaciones y bifurcaciones.

Resultados de aprendizaje:

  • Estructurar correctamente el código Go usando el estilo obligatorio de "una sola llave verdadera" para evitar errores de sintaxis.
  • Gestionar datos mediante diversas técnicas de declaración de variables y operadores de asignación aritmética.
  • Generar números pseudoaleatorios e implementar lógica condicional usando bifurcaciones y operadores lógicos.

🔹 Lección 3: La física de los datos espaciales

Resumen: Esta lección explora cómo Go maneja los datos numéricos, desde la precisión fraccional de los números de punto flotante hasta las escalas masivas necesarias para distancias astronómicas. Los estudiantes aprenderán a gestionar las limitaciones de la memoria de la computadora, incluyendo inexactitudes de punto flotante y desbordamiento de enteros, mientras dominan la conversión explícita de tipos y el uso del paquete big para tamaños numéricos "inusuales".

Resultados de aprendizaje:

  • Declarar y formatear variables de punto flotante usando float32 y float64 con ancho y precisión específicos.
  • Identificar y mitigar errores causados por inexactitudes de punto flotante y desbordamiento de enteros.
  • Utilizar el paquete big y constantes sin tipo para manejar números que superan los límites estándar de bits.

🔹 Lección 4: Construcción de módulos modulares

Resumen: Esta lección cubre los bloques fundamentales de los programas Go: funciones, tipos personalizados y métodos. Los estudiantes aprenderán a encapsular lógica para reutilizarla, definir nuevos tipos con comportamientos específicos y aprovechar funciones de primer nivel —incluyendo cierres y funciones anónimas— para crear código flexible y modular. La lección concluye con un proyecto práctico final que involucra tablas de conversión de temperatura.

Resultados de aprendizaje:

  • Definir e invocar funciones usando parámetros, argumentos y sintaxis variádica.
  • Distinguir entre identificadores exportados y no exportados usando las convenciones de nombres de Go.
  • Crear tipos personalizados y asociarles comportamientos usando métodos y receptores.

🔹 Lección 5: Equipando la bodega de carga

Resumen: Esta lección aborda las estructuras de datos esenciales en Go para gestionar colecciones de información. Transita desde matrices de longitud fija y su comportamiento de copia en memoria hasta slices dinámicos que actúan como ventanas flexibles sobre los datos, y finalmente a mapas para búsquedas clave-valor eficientes. La unidad culmina en el proyecto final "Juego de la Vida", que demuestra cómo usar slices multidimensionales para simular sistemas complejos.

Resultados de aprendizaje:

  • Declarar, inicializar e iterar matrices de longitud fija y cuadrículas multidimensionales.
  • Manipular slices usando rangos de índices y crecimiento dinámico mediante la función append.
  • Gestionar la eficiencia de memoria al distinguir entre longitud y capacidad, y preasignar colecciones con make.

🔹 Lección 6: Estructurando hábitats marcianos

Resumen: Esta lección presenta el enfoque de Go para organizar datos y comportamientos complejos. Los estudiantes aprenderán a agrupar tipos de datos diversos en estructuras (structs), inicializarlas usando literales compuestos y gestionar su comportamiento mediante métodos y funciones constructoras. La lección también explora la filosofía de diseño única de Go: favorecer la composición sobre la herencia y usar interfaces implícitas para lograr polimorfismo.

Resultados de aprendizaje:

  • Definir, inicializar y copiar estructuras para gestionar datos complejos de coordenadas marcianas y rovers.
  • Codificar estructuras de Go en formato JSON usando etiquetas de struct para intercambio de datos personalizado.
  • Implementar métodos, funciones constructoras y anidamiento de structs para construir código reutilizable y organizado.

🔹 Lección 7: Navegando el agujero del gopher

Resumen: Esta lección explora el poder y la seguridad de la indirección en Go, centrándose en cómo los punteros permiten una mutación de datos eficiente y un manejo adecuado de memoria. Proporciona un marco sólido para programación defensiva enseñando a los estudiantes a manejar valores nil, gestionar recursos con defer y aplicar patrones idiomáticos de manejo de errores —culminando en la aplicación de estas reglas a un motor de validación de Sudoku.

Resultados de aprendizaje:

  • Usar el símbolo & y el asterisco * para gestionar direcciones de memoria y desreferenciar valores.
  • Implementar parámetros y receptores de puntero para permitir la mutación de datos en funciones y métodos.
  • Navegar valores nil en slices, maps e interfaces sin provocar fallos en tiempo de ejecución.

🔹 Lección 8: Comunicaciones multirover

Resumen: Esta lección introduce los primitivos centrales de concurrencia en Go: goroutines y canales. Explora cómo ejecutar tareas de forma independiente, comunicarse de forma segura entre ellas y gestionar el estado compartido usando Mutexes para evitar condiciones de carrera. La lección concluye con un proyecto final que simula rovers marcianos navegando una cuadrícula y reportando descubrimientos.

Resultados de aprendizaje:

  • Iniciar y gestionar tareas concurrentes usando la palabra clave go.
  • Implementar comunicación segura entre goroutines usando canales y la sentencia select.
  • Construir pipelines de datos y gestionar ciclos de vida de goroutines cerrando canales.