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