package main
import (
"bufio"
"flag"
"fmt"
"io/ioutil"
"log"
"net/http"
"os"
"strings"
"time"
)
var url_list string = ""
func init() {
flag.StringVar(&url_list, "i", url_list, "")
flag.Parse()
}
func download(url string) {
t := time.Now()
resp, err := http.Get(url)
if err != nil {
fmt.Println(err)
}
defer resp.Body.Close()
content, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println(err)
}
fname := strings.Split(url, "/")
file, err := os.Create(fname[len(fname)-1])
if err != nil {
fmt.Println(err)
}
file.Write(content)
defer file.Close()
fmt.Printf("Filename: %s\nDownload time: %s\n\n", fname[len(fname)-1], time.Since(t))
}
func main() {
ll, err := os.Open(url_list)
if err != nil {
fmt.Println(err)
}
defer ll.Close()
scanner := bufio.NewScanner(ll)
for scanner.Scan() {
download(scanner.Text())
}
if err := scanner.Err(); err != nil {
log.Fatal(err)
}
}
Когда я пытаюсь использовать goroutine
...
for scanner.Scan() {
go download(scanner.Text())
...
то программа заканчивается сразу после запуска. Или поделитесь ссылкой, где описывается понятно для дебила как эти штуки работают. Спасибо.