所以我正在尝试使用 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 回答
- 1 回答
- 0 关注
- 137 浏览
添加回答
举报
0/150
提交
取消