Avatar ·

Wie wartet man auf den Abschluss aller Goroutinen in Go ohne Verwendung von time.Sleep?

Hallo zusammen! Ich habe angefangen, Go zu lernen und bin auf ein Problem mit der Synchronisation von Goroutinen gestoßen. Ich schreibe ein einfaches Programm, das mehrere Goroutinen zur parallelen Datenverarbeitung startet, aber ich schaffe es nicht, die Hauptfunktion auf deren Abschluss warten zu lassen. Hier ist mein Code: ```go package main import ( "fmt" "time" ) func worker(id int) { fmt.Printf("Worker %d gestartet\n", id) time.Sleep(2 * time.Second) // Simulation der Arbeit fmt.Printf("Worker %d beendet\n", id) } func main() { for i := 1; i <= 5; i++ { go worker(i) } // Das Programm wird sofort beendet, ohne auf die Goroutinen zu warten fmt.Println("Hauptfunktion beendet") } ``` Das Problem ist, dass das Programm sofort beendet wird, ohne auf die Ausführung der Goroutinen zu warten. Ich weiß, dass man `time.Sleep` verwenden kann, aber...