package main
import (
"fmt"
"io/ioutil"
"net/http"
"os"
)
func main() {
arg0 := os.Args[0:]
arg1 := os.Args[1:]
arg2 := os.Args[2:]
fmt.Println(arg0);
fmt.Println(arg1);
fmt.Print("\n")
fmt.Println(arg2);
for _, url := range os.Args[1:] {
resp, err := http.Get(url)
if err != nil {
fmt.Fprintf(os.Stderr, "fetch: %v\n", err)
os.Exit(1)
}
b, err := ioutil.ReadAll(resp.Body)
resp.Body.Close()
if err != nil {
fmt.Fprintf(os.Stderr, "fetch: reading %s: %v\n", url, err)
os.Exit(1)
}
fmt.Printf("%s", b)
}
}
package main
import (
"fmt"
// "io/ioutil"
"net/http"
"os"
"io"
)
func main() {
arg0 := os.Args[0:]
arg1 := os.Args[1:]
arg2 := os.Args[2:]
fmt.Println(arg0);
fmt.Println(arg1);
fmt.Print("\n")
fmt.Println(arg2);
for _, url := range os.Args[1:] {
resp, err := http.Get(url)
if err != nil {
fmt.Fprintf(os.Stderr, "fetch: %v\n", err)
os.Exit(1)
}
//b, err := ioutil.ReadAll(resp.Body)
io.Copy(os.Stdout, resp.Body)
resp.Body.Close()
if err != nil {
fmt.Fprintf(os.Stderr, "fetch: reading %s: %v\n", url, err)
os.Exit(1)
}
//fmt.Printf("%s", b)
}
}
package main
import (
"fmt"
// "io/ioutil"
// "net/http"
"os"
// "io"
)
func main() {
arg0 := os.Args[0:]
arg1 := os.Args[1:]
arg2 := os.Args[2:]
fmt.Println(arg0);
fmt.Println(arg1);
fmt.Print("\n")
fmt.Println(arg2);
for _, url := range os.Args[1:] {
fmt.Printf("url->: %s\n", url)
}
}
package main
import (
"fmt"
// "io/ioutil"
// "net/http"
"os"
// "io"
)
func main() {
arg0 := os.Args[0:]
arg1 := os.Args[1:]
arg2 := os.Args[2:]
fmt.Println(arg0);
fmt.Println(arg1);
fmt.Print("\n")
fmt.Println(arg2);
for _, url := range os.Args[1:] {
fmt.Printf("url->: %s\n", url)
}
// ch := make(chan string)
for range os.Args[1:] {
fmt.Println("This \n")
}
}
//fetchall fetches URLs in parallel and reports their times and sizes
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)//start a goroutine
}
for range os.Args[1:] {
fmt.Println(<-ch)
}
fmt.Printf("%.2fs elapsed\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)//send to channel ch
return
}
nbytes, err := io.Copy(ioutil.Discard, resp.Body)
resp.Body.Close() //don not leak resoures
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)
}