共计 680 个字符,预计需要花费 2 分钟才能阅读完成。
导读 | 使用 Golang 实现,使用 io.Copy 代替 ioutil.ReadAll。 |
题目
函数 调用 io.Copy(dst, src) 会从 src 中读取内容,并将读到的结果写入到 dst 中,使用这个函数替代掉例子中的 ioutil.ReadAll 来拷贝响应 结构体 到 os.Stdout,避免申请一个缓冲区(例子中的 b)来存储。记得处理 io.Copy 返回结果中的错误。
题目解决思路
我们只需要将 ioutil.ReadAll 替换为 io.Copy 函数。
代码具体实现
package main
import (
"fmt"
"io"
"net/http"
"os"
)
func main() {fmt.Println("嗨客网 (www.haicoder.net)")
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 := io.Copy(os.Stdout, resp.Body)
resp.Body.Close()
if err != nil {fmt.Fprintf(os.Stderr, "fetch: %v\n", err)
os.Exit(1)
}
fmt.Printf("%s", b)
}
}
我们输入以下命令行,开始运行程序:
go run haicoder.go http://www.haicoder.net
程序运行后,控制台输出如下:
正文完
星哥玩云-微信公众号