golang usando tempos limite com canais
Estou usando goroutines / canais para verificar se a lista de URLs está acessível. Aqui está o meu código. Isso parece sempre retornar verdadeiro. Por que o caso de tempo limite não está sendo executado? O objetivo é retornar falso, mesmo que um dos URLs não esteja acessível
import "fmt"
import "time"
func check(u string) bool {
time.Sleep(4 * time.Second)
return true
}
func IsReachable(urls []string) bool {
ch := make(chan bool, 1)
for _, url := range urls {
go func(u string) {
select {
case ch <- check(u):
case <-time.After(time.Second):
ch<-false
}
}(url)
}
return <-ch
}
func main() {
fmt.Println(IsReachable([]string{"url1"}))
}