ソースを参照

1.io.Copy,忽略中间流
2.strings.HasPrefix
3.resp.Status

龚成明 2 年 前
コミット
0472cd97df
1 ファイル変更8 行追加3 行削除
  1. 8 3
      chapter01/05/fetch.go

+ 8 - 3
chapter01/05/fetch.go

@@ -2,24 +2,29 @@ package main
 
 import (
 	"fmt"
-	"io/ioutil"
+	"io"
 	"net/http"
 	"os"
+	"strings"
 )
 
 func main() {
 	for _, url := range os.Args[1:] {
+		if !strings.HasPrefix(url, "http://") {
+			url = "http://" + url
+		}
+
 		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)
+		_, err = 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)
+		fmt.Printf("Status: %s\n", resp.Status)
 	}
 }