package main import ( "fmt" "time" "sync" ) func worker(id int) { fmt.Printf("Worker %d startet\n", id) // durch schlafen wird aufwändige Verarbeitung simuliert time.Sleep(time.Second) fmt.Printf("Worker %d ist fertig\n", id) } func main() { // Parallele Worker mit der WaitGroup var wg sync.WaitGroup // hier werden 5 Worker in einer Schleife nacheinander gestartet for i := 1; i <= 5; i++ { wg.Add(1) // weil sich alle Worker die Variable "i" teilen, brauchen wir hier noch eine eigene Kopie von "i" i := i go func() { defer wg.Done() worker(i) }() } // hier warten wir, bis alle Worker fertig sind wg.Wait() }