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 GRATIS 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
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.
Cadenas de texto y manipulación
Selectores y mutexes: concurrencia y exclusión
Agenda de contactos por consola
Composición de structs en lugar de herencia
Estructuras de control
Arrays y slices
Control de flujo y estructuras de bucle
Sistema API REST gestión de libros
Métodos con receptores por valor y por puntero
API REST con net/http
Generics
Evaluación Go
Métodos HTTP con net/http
Crear e invocar funciones
Operadores y expresiones
Polimorfismo a través de Interfaces
Manejo explícito de errores
Estructuras structs
Tipos de datos, variables y constantes
Introducción a Go
Canales y comunicación entre Goroutines
Condiciones de carrera
Punteros y referencias
Goroutines y concurrencia básica
Instalación Go primer programa
Errores personalizados y trazabilidad
Estructuras de datos Mapas
Cliente de API OpenWeatherMap clima
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.
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
Estructuras De Control
Sintaxis
Control De Flujo Y Estructuras De Bucle
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
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.