On 11/13/2017 04:10 AM, 2891132l...@gmail.com wrote:
> for range os.Args[1:] { > fmt.Println(<-ch) > } > fmt.Printf("%.2fs elasped\n", time.Since(start).Seconds()) > } If I understand correctly, you want fetch() to get each URL twice but you only read from the 'ch' channel once per URL. So if I passed it 3 urls, we should expect to receive at least 6 responses back on ch but you only read from it 3 times. If that loop above was something more like (and this is a kludge): for range append(os.Args[1:], os.Args[1:]...) { fmt.Println(<-ch) } or maybe better: for i := 0; i < len(os.Args[1:]) * 2; i++ { fmt.Println(<-ch) } The problem is that you return from fetch() early if there is an error so you might end up blocking on <-ch forever because the number of sends to that channel will not match the number of receives. If I were you, I'd consider using a sync.WaitGroup to wait for all of the fetch() calls to complete and store the results in a buffered channel. Once all of the fetch() calls are done, you can close the channel and range over it like this: https://play.golang.org/p/iCNyvpE4Y1 -- 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.