package main import ( "bufio" "flag" "fmt" "log" "net/http" "os" "sync" "text/tabwriter" ) var list = flag.String("list", "sitemap.txt", "Link list file") func fetchStatus(url string) string { resp, err := http.Get(url) if err != nil { log.Fatal(err) } defer resp.Body.Close() return resp.Status } func readList(file string) (s []string) { fd, err := os.Open(file) if err != nil { log.Fatal(err) } defer fd.Close() scanner := bufio.NewScanner(fd) for scanner.Scan() { s = append(s, scanner.Text()) } return s } func main() { flag.Parse() wg := new(sync.WaitGroup) defer wg.Wait() w := new(tabwriter.Writer) w.Init(os.Stdout, 16, 8, 0, '\t', 0) for _, url := range readList(*list) { wg.Add(1) go func(url string) { defer wg.Done() fmt.Fprintf(w, "%s\t%s\n", fetchStatus(url), url) w.Flush() }(url) } }