I try writing the program and run it. the program is as following:
package main

import (
   "fmt"
    "io"
    "io/ioutil"
    "net/http"
    "os"
    "time"
)

func main() {
    start := time.Now()
    ch := make(chan string)
    for _, url := range os.Args[1:] {
         go fetch(url, ch)
      }
    for range os.Args[1:] {
          fmt.Println(<-ch)
     }
     fmt.Printf("%.2fs elasped\n", time.Since(start).Seconds())
}
func fetch(url string, ch chan<- string) {
     start := time.Now()
     resp, err := http.Get(url)
     if err != nil {
          ch <- fmt.Sprint(err)
          return
     }
     nbytes, err := io.Copy(ioutil.Discard, resp.Body)
     resp.Body.Close()
     if err != nil {
          ch <- fmt.Sprintf("while reading %s %v", url, err)
          return
     }
     secs := time.Since(start).Seconds()
     ch <- fmt.Sprintf("%.2fs  %7d  %s", secs, nbytes, url)
      i++
}
the question is how to run fetch twice in succession to see the reported 
time changes.I changed the fetch function :
package main

import (
   "fmt"
    "io"
    "io/ioutil"
    "net/http"
    "os"
    "time"
)

func main() {
    start := time.Now()
    ch := make(chan string)
    for _, url := range os.Args[1:] {
         go fetch(url, ch)
      }
    for range os.Args[1:] {
          fmt.Println(<-ch)
     }
     fmt.Printf("%.2fs elasped\n", time.Since(start).Seconds())
}
func fetch(url string, ch chan<- string) {
     for i:=0;i<2;i++{
         start := time.Now()
         resp, err := http.Get(url)
         if err != nil {
               ch <- fmt.Sprint(err)
               return
        }
       nbytes, err := io.Copy(ioutil.Discard, resp.Body)
       resp.Body.Close()
       if err != nil {
              ch <- fmt.Sprintf("while reading %s %v", url, err)
             return
        }
        secs := time.Since(start).Seconds()
        ch <- fmt.Sprintf("%.2fs  %7d  %s", secs, nbytes, url)
     }
}
But the result can't change and it only runs for one time not two time.Why 
and how to solve it?? 





































}  i++  ch <- fmt.Sprintf("%.2fs  %7d  %s", secs, nbytes, url)  secs := 
time.Since(start).Seconds()  }   return   ch <- fmt.Sprintf("while reading 
%s %v", url, err)  if err != nil {  resp.Body.Close()  nbytes, err := 
io.Copy(ioutil.Discard, resp.Body)  }   return   ch <- fmt.Sprint(err)  if 
err != nil {  resp, err := http.Get(url)  start := time.Now()func fetch(url 
string, ch chan<- string) {} fmt.Printf("%.2fs elasped\n", 
time.Since(start).Seconds()) }  fmt.Println(<-ch) for range os.Args[1:] 
{ }  go fetch(url, ch) for _, url := range os.Args[1:] { ch := make(chan 
string) start := time.Now()func main() 
{) "time" "os" "net/http" "io/ioutil" "io" "fmt"import (

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