Go Academy · Aula

A biblioteca robfig/cron

Agende tarefas com a sintaxe do cron

Aula 2 de 413 etapas

A biblioteca robfig/cron é uma aula grátis de Go Academy no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Go Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Go Academy inclui 4 aulas no total.

Expressões Cron no Go

A biblioteca robfig/cron permite agendar tarefas com a conhecida sintaxe cron, em vez de escrever cálculos de tempo manualmente. Instale-a com go get github.com/robfig/cron/v3.

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

Revisão da sintaxe Cron

Uma expressão cron padrão tem cinco campos:

  • minuto (0-59)
  • hora (0-23)
  • dia do mês (1-31)
  • mês (1-12)
  • dia da semana (0-6)

Exemplo: 0 9 * * 1-5 = 9:00 AM nos dias úteis.

Criando um agendador

cron.New() retorna um agendador. Você adiciona tarefas e depois o inicia.

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

Adicionando uma tarefa

AddFunc registra uma função para ser executada conforme uma programação, retornando um ID de entrada e um erro se a especificação for inválida.

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

O campo de segundos

O robfig/cron v3 usa por padrão uma especificação de cinco campos (sem segundos). Para habilitar uma especificação de seis campos com segundos, crie o cron com a opção de segundos.

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

Agendamentos predefinidos

Há macros convenientes:

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

Removendo tarefas

Use o EntryID retornado para remover um job dinamicamente.

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

As tarefas são executadas em rotinas Go

Cada job agendado é executado em sua própria rotina Go. Se um job puder se sobrepor ao próximo acionamento, proteja-o contra a concorrência ou use um invólucro que ignore execuções sobrepostas.

Fusos horários

Por padrão, os agendamentos usam o horário local da máquina. Passe uma localização para torná-los explícitos e evitar surpresas relacionadas ao DST.

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

Analisando sem executar

Você pode validar uma especificação ou calcular a próxima execução com um analisador, o que é excelente para testes e para mostrar aos usuários a próxima execução.

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

Executável: calcular a próxima execução do cron (analogia)

robfig/cron é externo; este trecho da biblioteca padrão modela a regra cron mais simples, "a cada minuto no início do minuto", calculando o próximo horário correspondente.

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"))
}

Verificação rápida

Teste sua compreensão da biblioteca robfig/cron.

Recapitulação

Você aprendeu sobre a biblioteca robfig/cron:

  • cron.New() + AddFunc(spec, fn) + Start()
  • Por padrão, a especificação tem 5 campos; WithSeconds adiciona um campo de segundos
  • Macros como @daily e @every simplificam agendamentos comuns
  • Use Remove, localizações e ParseStandard para obter controle e realizar testes
Grátis para começar

Aprenda Go com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
51
Aulas
203

Perguntas Frequentes

A aula “A biblioteca robfig/cron” é grátis?

Sim — o texto completo de “A biblioteca robfig/cron” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Go Academy, atualize para CoddyKit PRO. O curso de Go Academy inclui 4 aulas no total.

O que vou aprender em “A biblioteca robfig/cron”?

Agende tarefas com a sintaxe do cron Você pratica Go Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Go Academy?

Nenhuma experiência prévia é necessária. Go Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “A biblioteca robfig/cron”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Go Academy?

Sim. Cada aula de Go Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Agendamento baseado em tempo
  2. A biblioteca robfig/cron
  3. Tickers para intervalos
  4. Desligamento normal de tarefas
← Voltar para Go Academy