AD

¿Ya dominas lo básico? Un curso estructurado de Go es la vía rápida para dar el salto.

Ver cursos de Go en Udemy

Enlace de afiliado. No te cuesta nada extra.

🐹Lecciones de Go
Lección 38 / 68

Acelerar cálculos con memoización (caché)

En esta lección evitarás repetir un cálculo guardando los resultados ya obtenidos.

Se usa un map como caché: antes de calcular se mira si la clave ya está, y después de calcular se guarda.

El código de ejemplo calcula el mismo valor dos veces, y en la segunda avisa de que lo recuperó de la caché.

Fíjate en la forma de consultar: v, ok := cache[n] devuelve el valor y un booleano que dice si la clave existía. Es imprescindible, porque leer una clave inexistente devuelve el valor cero sin avisar — y un 0 legítimo sería indistinguible de «no estaba».

Un aviso propio de Go: un map no es seguro para usarse desde varias goroutines a la vez. Si la caché se comparte entre peticiones concurrentes hay que protegerla con un sync.Mutex o usar sync.Map. Sin eso, el programa aborta con un error de acceso concurrente.

📖 Código de referencia
✍️ Tu código
Escribe tu código y pulsa «Ejecutar»

🧪 Este sitio no puede compilar ni ejecutar Go directamente, así que comprueba al instante si lo que escribiste coincide con el código de referencia (la corrección ocurre por completo en tu navegador; no se envía nada a ningún servidor).

🔗 El mismo tema en otros lenguajes

Mira cómo se escribe lo mismo en otro lenguaje.

Espacio publicitario (banner)
Espacio publicitario (en el artículo)