Thanks for the reply

How to gather all the values into CH and return to print

Thanks 

On Wednesday, October 25, 2017 at 7:41:34 PM UTC+5:30, M. Shulhan wrote:
>
> On Wed, 25 Oct 2017 06:30:09 -0700 (PDT) 
> desaia...@gmail.com <javascript:> wrote: 
>
> > 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) 
>
> You only print once, it suppose to be inside the loop or wrapped with 
> select while <-ch != "nil". 
>
> > } 
> > func main() { 
> >   GetUrlValues([]string{"url1", "url2", "url3"}) 
> > } 
> > 
>
>
>
> -- 
> { "name":"Mhd Sulhan", "phone":"+628567826625", "site":"kilabit.info" } 
>

-- 
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.

Reply via email to