Go

Go

Tutorial Go: Evaluación conocimientos Go

Go: Test de evaluación de conocimientos generales. Mide tus habilidades en Go desde conceptos básicos hasta avanzados, incluyendo concurrencia y desarrollo de APIs con net/http.

Aprende Go y certifícate

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:

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

CONSTRUYE TU CARRERA EN IA Y PROGRAMACIÓN SOFTWARE

Accede a +1000 lecciones y cursos con certificado. Mejora tu portfolio con certificados de superación para tu CV.

30 % DE DESCUENTO

Plan mensual

19.00 /mes

13.30 € /mes

Precio normal mensual: 19 €
63 % DE DESCUENTO

Plan anual

10.00 /mes

7.00 € /mes

Ahorras 144 € al año
Precio normal anual: 120 €
Aprende Go online

Ejercicios de esta lección Evaluación conocimientos Go

Evalúa tus conocimientos de esta lección Evaluación conocimientos Go con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Go

Accede a todas las lecciones de Go y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Accede GRATIS a Go y certifícate

Certificados de superación de Go

Supera todos los ejercicios de programación del curso de Go y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje 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.