способ, которым я использую код, передает список URL-адресов из файла и запускает каждый URL-адрес с моим кодом, код использует bufio, поэтому я могу передать URL-адреса из файла.
команда: кошка test2.txt | ./mygofile
https://beap.adss.yahoo.com/
https://id.answers.yahoo.com/search
https://brokenurl
https://id.answers.yahoo.com/KnowledgeSearchService
https://id.answers.yahoo.com/question/nextQuestion
содержимое примера URL
package main
import (
"log"
"bufio"
"bytes"
"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}
passedUrl := bufio.NewScanner(os.Stdin)
var pUrl string
for passedUrl.Scan() {
fmt.Println(passedUrl.Text())
if strings.Contains(passedUrl.Text(), "://"){
pUrl = passedUrl.Text()
} else {
pUrl = "https://" + passedUrl.Text()
}
body := "<?xml version=\"1.0\"?>"
req, err := http.NewRequest("POST", pUrl, bytes.NewBuffer([]byte(body)))
if err != nil {
log.Println(err)
}
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
}
defer resp.Body.Close()
}
}
Проблема в том, что код очень медленный, когда я даю огромный список URL-адресов. Можно ли как-нибудь сделать код многопоточным или быстрее простым способом