猿问

GoLang 扇入功能不起作用

所以我正在尝试使用 Rob Pike 的 fanin 函数编写一个网络爬虫。


这是我的代码 -


package main

import (

    "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

}

我运行这个程序,没有打印任何内容。


为什么?


郎朗坤
浏览 138回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答