I am expecting to show url1 (2 sec ), url2 (4 sec ) but not url3( 6 sec) where timeout is 5 sec
but program showing only url1 value Please help https://play.golang.org/p/aMOoSEHjmZ Thanks in advance Rgds, Abhi package main import "fmt" import "time" func InvokeUrl1(u string, val chan<- string) { time.Sleep(2 * time.Second) val <- "Url1 Value" } func InvokeUrl2(u string, val chan<- string) { time.Sleep(4 * time.Second) val <- "Url2 Value" } func InvokeUrl3(u string, val chan<- string) { time.Sleep(6 * time.Second) val <- "Url3 Value" } func GetUrlValues(urls []string) { ch := make(chan string, 1) for _, url := range urls { go func(u string) { val := make(chan string) if u == "url1" { go InvokeUrl1(u, val) } else if u == "url2" { go InvokeUrl2(u, val) } else if u == "url3" { go InvokeUrl3(u, val) } select { case ret := <-val: ch <- ret case <-time.After(5 * time.Second): ch <- "nil" } }(url) } fmt.Println(<-ch) } func main() { GetUrlValues([]string{"url1", "url2", "url3"}) } -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.