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ícateEste 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ó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
Otras 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.
Introducción A Go
Introducción Y Entorno
Instalación Y Primer Programa De Go
Introducción Y Entorno
Tipos De Datos, Variables Y Constantes
Sintaxis
Operadores Y Expresiones
Sintaxis
Cadenas De Texto Y Manipulación
Sintaxis
Control Condicional
Sintaxis
Control Iterativo
Sintaxis
Funciones
Sintaxis
Arrays Y Slices
Estructuras De Datos
Mapas
Estructuras De Datos
Punteros Y Referencias
Estructuras De Datos
Estructuras Structs
Programación Orientada A Objetos
Métodos Con Receptores Por Valor Y Por Puntero
Programación Orientada A Objetos
Polimorfismo A Través De Interfaces
Programación Orientada A Objetos
Composición De Structs En Lugar De Herencia
Programación Orientada A Objetos
Generics
Programación Orientada A Objetos
Manejo Explícito De Errores
Manejo De Errores Y Excepciones
Errores Personalizados Y Trazabilidad
Manejo De Errores Y Excepciones
Métodos Http Con Net/http
Comunicación Por Http
Api Rest Con Net/http
Comunicación Por Http
Goroutines Y Concurrencia Básica
Concurrencia Y Paralelismo
Canales Y Comunicación Entre Goroutines
Concurrencia Y Paralelismo
Condiciones De Carrera
Concurrencia Y Paralelismo
Selectores Y Mutexes Concurrencia Y Exclusión Mutua
Concurrencia Y Paralelismo
Evaluación Conocimientos Go
Evaluación
Ejercicios de programación de 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.