引数で指定した型で出力する型を変更するTips part2

昨日以下のエントリを書きましたが json.Unmarshal versionで書いていたので stream でレスポンスを扱う方も追加で記載します。

ema-hiro.hatenablog.com

streamを使うパターン

func HogeSetter(url string, out interface{}) error {
    resp, err := http.Get(url)
    if err != nil {
       return err
    }

    if err := json.NewDecoder(resp).Decode(out); err != nil {
        return err
    }

    return nil 
}

なぜstreamを使うかというのは以下の記事が参考になると思います。

christina04.hatenablog.com

bytes.NewReader(b []byte)

エントリの趣旨とは関係ないですが、Go Playgroundは net/http が使えないのでこういった streamを扱うときに io.Reader を作る必要があるのですが、いつも忘れるので備忘録で記載します。

bytes.NewReader(b []byte) -> https://golang.org/pkg/bytes/#NewReader を使います。

使って書いてみたケース -> https://play.golang.org/p/g2Bl_Zoxq7N