Aller au contenu

Timeouts

Vous pouvez implémenter des timeouts en utilisant select avec time.After. Si une opération sur canal ne se termine pas dans le délai imparti, la clause time.After s’exécute.

Attendre un canal qui n’envoie jamais, avec un timeout d’une seconde.

package main
import (
"fmt"
"time"
)
func main() {
ch := make(chan string)
go func() {
time.Sleep(2 * time.Second)
ch <- "résultat"
}()
select {
case res := <-ch:
fmt.Println(res)
case <-time.After(1 * time.Second):
fmt.Println("timeout")
}
}
Fenêtre de terminal
timeout