Я использую goroutines/channels, чтобы проверить, доступен ли список URL-адресов. Вот мой код. Кажется, что это всегда верно. Почему тайм-аут не выполняется? Цель состоит в том, чтобы вернуть false, даже если один из URL недоступен
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"}))
}