// Fetch prints the content found at a URL. package main import ( "fmt" "io" "net/http" "os" "strings" ) func main() { for _, url := range os.Args[1:] { if strings.HasPrefix(url, "http://") { fmt.Println("url:",url) } else { url = "http://" + url fmt.Println("url:",url) } resp, err := http.Get(url) //请求命令行参数传入的url fmt.Println("httpCode:",resp.Status) if err != nil { fmt.Fprintf(os.Stderr, "fetch: %v\n", err) os.Exit(1) } //创建文件 fp, err := os.Create("./demo.html") // 如果文件已存在,会将文件清空。 fmt.Println(fp, err) // &{0xc000076780} fmt.Println("%T???", fp) // *os.File 文件指针类型 if err != nil { fmt.Println("文件创建失败") //创建文件失败的原因有: //1、路径不存在 2、权限不足 3、打开文件数量超过上限 4、磁盘空间不足等 return } b, err := io.Copy(fp, resp.Body) //读body中的数据,放到内存 if err != nil { fmt.Println("iO.Copy函数报错") return } fp.Close() resp.Body.Close() fmt.Printf("b:%d", b) //打印出来 } }