0Pricing
Go Academy · Lección

Tickers para intervalos

Repita tareas a intervalos fijos

Tickers para intervalos es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Go Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Go Academy incluye 4 lecciones en total.

Repetición a una frecuencia fija

Cuando simplemente necesita hacer algo cada N segundos, un Ticker es la herramienta adecuada. A diferencia de un bucle con una pausa, se activa con una cadencia constante y no deriva debido al tiempo de trabajo.

Crear un Ticker

time.NewTicker(d) devuelve un Ticker cuyo canal C recibe la hora actual cada d.

ticker := time.NewTicker(time.Second)
defer ticker.Stop()

Detenga siempre un Ticker

Un ticker mantiene activo un temporizador interno. Si nunca llama a Stop(), se produce una fuga. Use defer ticker.Stop() inmediatamente después de crearlo.

Recorrer el canal

Puede recorrer el canal del ticker para reaccionar en cada tic.

for t := range ticker.C {
    fmt.Println("tick at", t)
}

Detener con select

Combine el ticker con un canal de finalización para que el bucle pueda salir correctamente.

for {
    select {
    case <-ticker.C:
        doWork()
    case <-done:
        return
    }
}

Ticker frente a Timer

Diferencia clave:

  • Timer se activa una vez después de un retraso
  • Ticker se activa repetidamente a intervalos

Use un Timer para tiempos de espera de una sola ejecución y un Ticker para trabajos periódicos.

Practicidad de time.Tick

time.Tick(d) devuelve únicamente el canal. Es práctico, pero no se puede detener, por lo que produce fugas si se usa en programas de larga duración. Prefiera NewTicker fuera de los scripts rápidos.

for range time.Tick(time.Second) {
    // simple, but cannot Stop -> avoid in servers
}

Gestionar trabajos lentos

Si el trabajo tarda más que el intervalo, los tics no se ponen en cola; el ticker descarta tics en lugar de ejecutarlos todos de golpe. Así nunca se acumula trabajo pendiente, pero puede perder tics bajo carga.

Ajustar la frecuencia

Para cambiar el intervalo, cree un ticker nuevo. Go 1.15+ también ofrece ticker.Reset(d) para cambiar el periodo sin volver a asignar memoria.

ticker.Reset(500 * time.Millisecond)

Cancelación del contexto

En servicios reales, controle los bucles del ticker con un context.Context para que las señales de apagado los detengan correctamente.

case <-ctx.Done():
    return ctx.Err()

Ejecutable: Ticker de frecuencia fija

Este programa autónomo genera tres tics a un intervalo fijo y después se detiene correctamente mediante un contador.

package main

import (
    "fmt"
    "time"
)

func main() {
    ticker := time.NewTicker(10 * time.Millisecond)
    defer ticker.Stop()
    count := 0
    for range ticker.C {
        count++
        fmt.Println("tick", count)
        if count == 3 {
            break
        }
    }
    fmt.Println("done")
}

Comprobación rápida

Compruebe sus conocimientos sobre los tickers.

Resumen

Ha aprendido a usar tickers para establecer intervalos:

  • time.NewTicker(d) se activa cada d en su canal C
  • Use siempre defer ticker.Stop() para evitar fugas
  • Los tickers descartan tics cuando el trabajo es lento en lugar de ejecutarlos todos de golpe
  • Use Reset para cambiar la frecuencia y un contexto o canal de finalización para salir

Preguntas frecuentes

¿La lección «Tickers para intervalos» es gratis?

Sí — el texto completo de «Tickers para intervalos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Go Academy, actualiza a CoddyKit PRO. El curso de Go Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Tickers para intervalos»?

Repita tareas a intervalos fijos Practicas Go Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Go Academy?

No se requiere experiencia previa. Go Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Tickers para intervalos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Go Academy?

Sí. Cada lección de Go Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Programación basada en el tiempo
  2. La biblioteca robfig/cron
  3. Tickers para intervalos
  4. Cierre ordenado de tareas
← Volver a Go Academy