Go Academy · Lección

La biblioteca robfig/cron

Programe con sintaxis cron

Lección 2 de 413 pasos

La biblioteca robfig/cron es una lección gratuita de Go Academy en CoddyKit. Esta es la lección 2 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.

Expresiones cron en Go

La biblioteca robfig/cron permite programar tareas con la conocida sintaxis cron en lugar de escribir manualmente los cálculos de tiempo. Instálela con go get github.com/robfig/cron/v3.

import "github.com/robfig/cron/v3"

Repaso de la sintaxis cron

Una expresión cron estándar tiene cinco campos:

  • minuto (0-59)
  • hora (0-23)
  • día del mes (1-31)
  • mes (1-12)
  • día de la semana (0-6)

Ejemplo: 0 9 * * 1-5 = las 9:00 de la mañana de lunes a viernes.

Creación de un planificador

cron.New() devuelve un planificador. Añada las tareas y, después, inícielo.

c := cron.New()
c.Start()
defer c.Stop()

Añadir una tarea

AddFunc registra una función para ejecutarla según una programación y devuelve un ID de entrada y un error si la especificación no es válida.

id, err := c.AddFunc("30 * * * *", func() {
    fmt.Println("runs at minute 30")
})
if err != nil {
    log.Fatal(err)
}
_ = id

El campo de los segundos

robfig/cron v3 utiliza de forma predeterminada una especificación de 5 campos (sin segundos). Para habilitar una especificación de 6 campos con segundos, cree el cron con la opción de segundos.

c := cron.New(cron.WithSeconds())
c.AddFunc("*/5 * * * * *", func() { fmt.Println("every 5s") })

Programaciones predefinidas

Existen macros prácticas:

  • @hourly
  • @daily
  • @weekly
  • @every 1h30m
c.AddFunc("@every 1h30m", func() { fmt.Println("every 90 min") })
c.AddFunc("@daily", func() { fmt.Println("midnight") })

Eliminar trabajos

Use el EntryID devuelto para eliminar un trabajo dinámicamente.

id, _ := c.AddFunc("@hourly", task)
// later:
c.Remove(id)

Los trabajos se ejecutan en goroutines

Cada trabajo programado se ejecuta en su propia goroutine. Si un trabajo puede coincidir con su próxima activación, controle la concurrencia o use un envoltorio que omita las ejecuciones superpuestas.

Zonas horarias

De forma predeterminada, las programaciones usan la hora local de la máquina. Pase una ubicación para hacerlas explícitas y evitar sorpresas por el horario de verano.

loc, _ := time.LoadLocation("America/New_York")
c := cron.New(cron.WithLocation(loc))

Analizar sin ejecutar

Puede validar una especificación o calcular la próxima ejecución con un analizador, lo que resulta ideal para las pruebas y para mostrar a los usuarios la próxima ejecución.

sched, _ := cron.ParseStandard("0 9 * * 1-5")
next := sched.Next(time.Now())
fmt.Println("next run:", next)

Ejecutable: calcular la próxima ejecución de Cron (analogía)

robfig/cron es externo; este fragmento de la biblioteca estándar modela la regla de cron más sencilla, «cada minuto al inicio del minuto», calculando la próxima hora que coincida.

package main

import (
    "fmt"
    "time"
)

func nextRun(from time.Time) time.Time {
    return from.Truncate(time.Minute).Add(time.Minute)
}

func main() {
    now := time.Date(2026, 1, 1, 8, 15, 30, 0, time.UTC)
    fmt.Println("now:", now.Format("15:04:05"))
    fmt.Println("next:", nextRun(now).Format("15:04:05"))
}

Comprobación rápida

Compruebe sus conocimientos sobre la biblioteca robfig/cron.

Resumen

Ha aprendido a usar la biblioteca robfig/cron:

  • cron.New() + AddFunc(spec, fn) + Start()
  • La especificación tiene 5 campos de forma predeterminada; WithSeconds añade un campo para los segundos
  • Las macros como @daily y @every simplifican las programaciones habituales
  • Use Remove, las ubicaciones y ParseStandard para obtener control y realizar pruebas
Gratis para empezar

Aprende Go con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
51
Lecciones
203

Preguntas frecuentes

¿La lección «La biblioteca robfig/cron» es gratis?

Sí — el texto completo de «La biblioteca robfig/cron» 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 «La biblioteca robfig/cron»?

Programe con sintaxis cron 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 2 de 4.

¿Cuánto tiempo toma la lección «La biblioteca robfig/cron»?

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