植物のミカタから任意の画像データを取得し、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言語でファイル作成