所以我正在嘗試使用 Rob Pike 的 fanin 函數編寫一個網絡爬蟲。這是我的代碼 -package mainimport ( "net/http" "encoding/json" "fmt" "io/ioutil")func main() { fanIn(getDuckDuckGo("food"), getGitHub("defunkt"))}type DuckDuckGoResponse struct { RelatedTopics []struct { Result string `json:"Result"` FirstUrl string `json:"FirstURL"` Text string `json:"Text"` } `json:"RelatedTopics"`}type GitHubResponse struct { Login string `json:"login"` Email string `json:"email"` Name string `json:"name"`}func fanIn(input1 <-chan DuckDuckGoResponse, input2 <-chan GitHubResponse) <-chan string { c := make(chan string) go func() { for { select { case s := <-input1: fmt.Println(s) case s := <-input2: fmt.Println(s) } } }() return c}func getDuckDuckGo(k string) <-chan DuckDuckGoResponse { resp, err := http.Get("http://api.duckduckgo.com/?q=" + k + "&format=json&pretty=1") if err != nil { return nil } c := make(chan DuckDuckGoResponse) var duckDuckParsed DuckDuckGoResponse jsonDataFromHttp, jsonErr := ioutil.ReadAll(resp.Body) if jsonErr != nil { fmt.Println("Json error!") } defer resp.Body.Close() if err:= json.Unmarshal(jsonDataFromHttp, &duckDuckParsed); err != nil { panic(err) } return c}func getGitHub(k string) <-chan GitHubResponse { resp, err := http.Get("https://api.github.com/users/?q=" + k) if err != nil { return nil } c := make(chan GitHubResponse) var githubParsed GitHubResponse jsonDataFromHttp, jsonErr := ioutil.ReadAll(resp.Body) if jsonErr != nil { fmt.Println("Json error!") } defer resp.Body.Close() if err:= json.Unmarshal(jsonDataFromHttp, &githubParsed); err != nil { panic(err) } return c}我運行這個程序,沒有打印任何內容。為什么?
- 1 回答
- 0 關注
- 153 瀏覽
添加回答
舉報
0/150
提交
取消