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())
...
то программа заканчивается сразу после запуска. Или поделитесь ссылкой, где описывается понятно для дебила как эти штуки работают. Спасибо.


