Este ejercicio de evaluación está diseñado para medir tus conocimientos en Go y su ecosistema. Para rendir satisfactoriamente esta evaluación, es necesario que tengas un entendimiento sólido de los siguientes temas:
¿Te está gustando esta lección?
Inicia sesión para no perder tu progreso y accede a miles de tutoriales, ejercicios prácticos y nuestro asistente de IA.
Más de 25.000 desarrolladores ya confían en CertiDevs
Temas a evaluar
Introducción a Go
- Historia y filosofía de Go
- Usos de Go en la actualidad
- Comparativa de Go con otros lenguajes de programación
Instalación y primer programa de Go
- Estructura básica de un programa Go
- Compilación y ejecución
- El paquete
main
y la funciónmain
- Paquetes e importaciones
Tipos de datos, variables y constantes
- Declaración y asignación de variables
- Tipos de datos primitivos: enteros, flotantes, booleanos, cadenas
- Uso de constantes con la palabra clave
const
Operadores y expresiones
- Operadores aritméticos, lógicos y relacionales
- Precedencia y asociatividad de operadores
- Conversión y casting de tipos
Cadenas de texto y manipulación
- Operaciones básicas con cadenas
- Uso del paquete
strings
- Formateo y construcción de cadenas con
fmt
Estructuras de control
- Sentencias
if
,else if
,else
- Uso de
switch
ycase
Control de flujo y estructuras de bucle
- Uso del bucle
for
en sus distintas formas - Iteración sobre colecciones con
range
- Control de bucles con
break
ycontinue
Funciones
- Definición y llamada de funciones
- Parámetros, argumentos y valores de retorno
- Valores de retorno múltiples y nombrados
Arrays y slices
- Declaración y uso de arrays
- Introducción y manejo de slices
- Operaciones comunes: agregar, copiar, segmentar
Mapas
- Creación y manipulación de mapas
- Acceso y modificación de elementos
- Detección de claves y eliminación de pares
Punteros y referencias
- Concepto de punteros en Go
- Operadores
&
(dirección) y*
(indirección) - Punteros a tipos y seguridad de memoria
Estructuras (structs)
- Definición y uso de structs
- Campos anónimos y composición
- Comparación con clases en otros lenguajes
Métodos con receptores por valor y por puntero
- Asociar métodos a tipos definidos
- Receptores por valor
- Receptores por puntero
- Encapsulación y acceso a datos
- Modificación de estado en métodos
Polimorfismo a través de Interfaces
- Cómo definir e implementar interfaces en Go
- Polimorfismo basado en interfaces y cómo usarlo en lugar de herencia
- Uso de interfaces vacías (
interface{}
) y su aplicación
Composición de structs en lugar de herencia
- Incrustación de structs y cómo se logra la reutilización de código
- Ejemplos de composición vs herencia clásica
- Cómo la composición promueve la flexibilidad y evita problemas comunes de la herencia
Generics
- Cómo definir funciones y tipos genéricos
- Restricciones de tipos mediante
type constraints
- Ejemplos de uso de genéricos en estructuras de datos y funciones comunes
Manejo explícito de errores
- Retorno de tipo
error
en funciones - Propagación de errores
- Evitar el manejo de errores silencioso
Errores personalizados y wrapping para mejorar la trazabilidad
- Creación de errores personalizados
- Cómo envolver errores con
fmt.Errorf
- Uso de
errors.Is
yerrors.As
para desempaquetar y analizar errores complejos - Casos prácticos: cuándo y cómo aplicar wrapping de errores para depuración efectiva
Métodos HTTP con net/http
- Realizar peticiones HTTP GET
- Realizar peticiones HTTP POST
- Realizar peticiones HTTP PUT y PATCH
- Realizar peticiones HTTP DELETE
API REST con net/http
- Configurar un API REST JSON sin framework
- Recibir peticiones GET
- Recibir peticiones POST
- Realizar peticiones HTTP PUT y PATCH
- Realizar peticiones HTTP DELETE
Goroutines y concurrencia básica
- Cómo crear y manejar Goroutines
- Uso de WaitGroups para gestionar ciclos de vida de las Goroutines
- Ejemplos de ejecución concurrente utilizando Goroutines
Canales y comunicación entre Goroutines
- Creación y uso de canales (unbuffered y buffered)
- Cómo enviar y recibir datos entre Goroutines
- Patrones comunes como el modelo productor-consumidor y Fan-in/Fan-out
Condiciones de carrera
- Qué es una condición de carrera
- Cómo detectar condiciones de carrera
- Cómo solucionar condiciones de carrera
Selectores y Mutexes: Concurrencia y Exclusión Mutua
- Uso del
select
para gestionar múltiples canales simultáneamente - Uso de
mutexes
para sincronización y evitar condiciones de carrera - Ejemplos de patrones concurrentes con selectores y protección de datos compartidos con mutexes
Aprendizajes de esta lección
- Comprender la historia y filosofía de Go.
- Manejar la sintaxis y estructura básica de programas en Go.
- Utilizar tipos de datos, variables, constantes y operadores.
- Manipular cadenas de texto y formatear salidas.
- Implementar estructuras de control y bucles.
- Definir y usar funciones con parámetros y retornos múltiples.
- Trabajar con arrays, slices y mapas.
- Entender y aplicar punteros y referencias.
- Crear structs y métodos asociados.
- Implementar interfaces y aplicar polimorfismo.
- Usar generics para funciones y tipos genéricos.
- Manejar errores de forma explícita y crear errores personalizados.
- Desarrollar aplicaciones HTTP utilizando el paquete
net/http
. - Implementar concurrencia con goroutines y canales.
- Detectar y resolver condiciones de carrera.
- Sincronizar código concurrente utilizando selectores y mutexes.
Completa Go y certifícate
Únete a nuestra plataforma y accede a miles de tutoriales, ejercicios prácticos, proyectos reales y nuestro asistente de IA personalizado para acelerar tu aprendizaje.
Asistente IA
Resuelve dudas al instante
Ejercicios
Practica con proyectos reales
Certificados
Valida tus conocimientos
Más de 25.000 desarrolladores ya se han certificado con CertiDevs