errChan := make(chan error) // make(chan error, 5)
go func() {
for err := range errChan {
if err != nil {
fmt.Println(err)
}
select {
case <-time.After(0): // 1 * time.Millisecond -> Wenn der Channel voll ist, warten wir maximal 1 Millisekunde, um Platz für ein neues Element im Channel zu schaffen
select {
case <-errChan:
// Verwerfen des ältesten Elements im Channel, um Platz für ein neues Element zu schaffen
default:
// Wenn es kein Element im Channel gibt, machen wir nichts
}
}
}
}()
errChan <- errors.New("error chan 1")
go func() {
time.Sleep(3 * time.Second)
errChan <- errors.New("error chan 2")
time.Sleep(3 * time.Second)
errChan <- errors.New("error chan 3")
time.Sleep(3 * time.Second)
errChan <- errors.New("error chan 4")
time.Sleep(3 * time.Second)
errChan <- errors.New("error chan 5")
time.Sleep(3 * time.Second)
errChan <- errors.New("error chan 6")
time.Sleep(3 * time.Second)
errChan <- errors.New("error chan 7")
time.Sleep(3 * time.Second)
errChan <- errors.New("error chan 8")
time.Sleep(3 * time.Second)
errChan <- errors.New("error chan 9")
}()
errChan <- errors.New("error chan 10")