植物のミカタから任意の画像データを取得し、main.goと同階層に画像ファイルを作成してみる。


package main

import (
"io/ioutil"
"log"
"net/http"
"os"
)

func main() {
var url string
url = "https://saitodev.co/site/files10/P5080305.jpg"
response, err := http.Get(url)
if err != nil {
log.Fatal(err)
}
defer response.Body.Close()
body, err := ioutil.ReadAll(response.Body)
if err != nil {
log.Fatal(err)
}
file, err := os.Create("sample.jpg")
if err != nil {
log.Fatal(err)
}
defer file.Close()
file.Write(body)
}

var url stringで変数urlを用意。今回は、植物のミカタの任意の画像のアドレスをコピーし、urlに代入する。response, err := http.Get(url)のGetでurlの情報を取得する。Getの時は、responseという返り値にBodyというフィールドが紐づいているので、defer response.Body.Close()とする。

次にbody, err := ioutil.ReadAll(response.Body)の ioutil.ReadAllで、response.Bodyに入っているでデータを8bitの値(byte型)に変えて読み込む。file, err := os.Create("sample.jpg")のos.Createで、"sample.jpg"を作成する。os.Createの時も、Closeする決まりなので、defer file.Close()。最後にbodyに入っている情報をfileに書き込むので、file.Write(body)とする。下記のようにsample.jpgファイルができ、その中に画像が書き込まれる。


関連記事

Go言語でHTTPのGET

Go言語でファイル作成