A Tour of Goの練習問題を解説するシリーズ(9/11) – Exercise: Images

みなさん、こんにちは。人類をGopherにしたいと考えているまるりんです。

A Tour of Goはプログラミング言語Goの入門サイトです。 このシリーズではA Tour of Goの練習問題を解説します。

今回は以下の問題を扱います。

問題
Exercise: Images
解答
https://go.dev/play/p/CG-MZrE7e-I


以下のようにあるため、まずはImage型のインタフェースを脳死で実装します。実行結果は当然エラーです。

Bounds は、 image.Rect(0, 0, w, h) のようにして image.Rectangle を返すようにします。

ColorModel は、 color.RGBAModel を返すようにします。

At は、ひとつの色を返します。 生成する画像の色の値 v を color.RGBA{v, v, 255, 255} を利用して返すようにします。

ソース
https://go.dev/play/p/MsBJp8ceqkf

実行結果

go: finding module for package golang.org/x/tour/pic
go: downloading golang.org/x/tour v0.1.0
./prog.go:17:26: undefined: w
./prog.go:17:29: undefined: h
./prog.go:21:20: undefined: v

実行結果に未定義の変数w、h、vがあるので定義します。 wとhはなんとなくImageに持たせそうなので構造体のフィールドにします。 vはスライスの練習問題で使用した式((x+y)/2)から作ります。xとyはAt()の引数です。

ソース
https://go.dev/play/p/CG-MZrE7e-I

実行結果

fig

長方形を描画するためのインタフェースを定義し、pic.ShowImage()が定義したインタフェースを呼び出して描画が行われる。 インタフェースについてこなれてきた感が出てきました。