Пожалуйста, помогите мне, пока этот код не заканчивается, я ноб-кодировщик ... и я сделал этот код разорванным с мест :)
использую список URL-адресов для подачи кода. пример: cat urls.txt | ./mygofile
пример списка URL-адресов (urls.txt)
https://id.answers.yahoo.com/KnowledgeSearchService
https://id.answers.yahoo.com/question/nextQuestion
https://beap.adss.yahoo.com/
https://id.answers.yahoo.com/search
https://id.answers.yahoo.com/KnowledgeSearchService
https://id.answers.yahoo.com/question/nextQuestion
https://beap.adss.yahoo.com/
https://id.answers.yahoo.com/search
package main
import (
"log"
"bufio"
"sync"
"fmt"
"net/http"
"os"
"strings"
"crypto/tls"
)
func main() {
tr := http.DefaultTransport.(*http.Transport).Clone()
tr.TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
client := &http.Client{Transport: tr}
var wg sync.WaitGroup
work := make(chan string)
for i := 0; i < 10; i++ {
wg.Add(i)
go func() {
defer wg.Done()
for purl := range work {
if !strings.Contains(purl, "://") {
purl = "https://" + purl
}
body := "<?xml version=\"1.0\"?>"
fmt.Println(purl)
req, err := http.NewRequest("POST", purl, strings.NewReader(body))
if err != nil {
log.Println(err)
continue
}
req.Header.Add("Content-Type", "application/xml; charset=utf-8")
resp, err := client.Do(req)
if err != nil {
log.Println(err)
continue // stop here and process next item
}
// do something with resp
resp.Body.Close()
}
}()
}
passedUrl := bufio.NewScanner(os.Stdin)
for passedUrl.Scan() {
work <- passedUrl.Text()
}
close(work)
// signal workers to exit
wg.Wait() // wait for workers to exit
}
Пожалуйста, помогите мне с объяснением, почему код не заканчивается после того, как он сделан с URL.