Go Academy · Les

De robfig/cron-bibliotheek

Plan met cron-syntaxis

Les 2 van 413 stappen

De robfig/cron-bibliotheek is een gratis Go Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Go Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Go Academy bevat in totaal 4 lessen.

Cron-expressies in Go

Met de bibliotheek robfig/cron kun je taken plannen met de vertrouwde cronsyntaxis, in plaats van zelf tijdsberekeningen te schrijven. Installeer de bibliotheek met go get github.com/robfig/cron/v3.

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

Opfrisser van de cronsyntaxis

Een standaard cron-expressie heeft vijf velden:

  • minuut (0-59)
  • uur (0-23)
  • dag van de maand (1-31)
  • maand (1-12)
  • dag van de week (0-6)

Voorbeeld: 0 9 * * 1-5 = 9:00 uur op werkdagen.

Een planner maken

cron.New() geeft een planner terug. Je voegt taken toe en start de planner vervolgens.

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

Een taak toevoegen

AddFunc registreert een functie die volgens een schema wordt uitgevoerd. De functie geeft een item-ID terug en een fout als de specificatie ongeldig is.

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

Het secondenveld

robfig/cron v3 gebruikt standaard een specificatie met vijf velden, dus zonder seconden. Als je een specificatie met zes velden en seconden wilt gebruiken, maak je de cron aan met de optie voor seconden.

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

Vooraf gedefinieerde schema's

Er zijn handige macro's:

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

Taken verwijderen

Gebruik de geretourneerde EntryID om dynamisch een taak te verwijderen.

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

Taken worden in goroutines uitgevoerd

Elke geplande taak wordt in een eigen goroutine uitgevoerd. Als een taak kan overlappen met de volgende activering, bescherm je dan tegen gelijktijdige uitvoering of gebruik een wrapper die overlappende uitvoeringen overslaat.

Tijdzones

Standaard gebruiken schema's de lokale tijd van de machine. Geef een locatie door om de tijdzone expliciet te maken en verrassingen door zomertijd te voorkomen.

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

Parseren zonder uitvoeren

Je kunt een specificatie valideren of met een parser de volgende uitvoering berekenen. Dat is handig voor testen en om gebruikers de volgende uitvoering te tonen.

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

Uitvoerbaar: de volgende cron-uitvoering berekenen (analogie)

robfig/cron is extern; dit fragment uit de standaardbibliotheek modelleert de eenvoudigste cron-regel "elke minuut op de minuutgrens" door het volgende overeenkomende tijdstip te berekenen.

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

Korte controle

Toets je begrip van de bibliotheek robfig/cron.

Samenvatting

Je hebt de bibliotheek robfig/cron geleerd:

  • cron.New() + AddFunc(spec, fn) + Start()
  • Standaard een specificatie met vijf velden; WithSeconds voegt een secondenveld toe
  • Macro's zoals @daily en @every maken veelvoorkomende schema's eenvoudiger
  • Gebruik Remove, locaties en ParseStandard voor beheer en testen
Gratis beginnen

Leer Go met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
51
Lessen
203

Veelgestelde vragen

Is de les “De robfig/cron-bibliotheek” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Go Academy, waaronder “De robfig/cron-bibliotheek”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Go Academy bevat in totaal 4 lessen.

Wat leer ik in “De robfig/cron-bibliotheek”?

Plan met cron-syntaxis Je oefent met Go Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Go Academy te beginnen?

Ervaring vooraf is niet nodig. Go Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “De robfig/cron-bibliotheek”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Go Academy?

Ja. Elke les over Go Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Tijdgestuurd plannen
  2. De robfig/cron-bibliotheek
  3. Tickers voor intervallen
  4. Taken netjes afsluiten
← Terug naar Go Academy