Evaluación conocimientos Go

Experto
Go
Go
Actualizado: 08/11/2024

¡Desbloquea el curso completo!

IA
Ejercicios
Certificado
Entrar

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.

Progreso guardado
Asistente IA
Ejercicios
Iniciar sesión gratis

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ón main
  • 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 y case

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 y continue

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 y errors.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

⭐⭐⭐⭐⭐
4.9/5 valoración