前提・実現したいこと
A Tour of GoのExercise: Imagesの中で一点理解できない箇所があるのでご教授いただきたいです。
問題文は以下です。
『自分の Image 型を定義し、 インタフェースを満たすのに必要なメソッド を実装し、 pic.ShowImage を呼び出してみてください。
Bounds は、 image.Rect(0, 0, w, h) のようにして image.Rectangle を返すようにします。
ColorModel は、 color.RGBAModel を返すようにします。
At は、ひとつの色を返します。 生成する画像の色の値 v を color.RGBA{v, v, 255, 255} を利用して返すようにします。』
結論から言うと、わからないのはtype Image interface {...}
とtype Image struct{}
の使い方です。
解答例
Go
1 2package main 3 4import ( 5 "golang.org/x/tour/pic" 6 "image" 7 "image/color" 8) 9 10type Image struct{} ????ここがわからない 11 12func (i Image) ColorModel() color.Model { 13 return color.RGBAModel 14} 15 16func (i Image) Bounds() image.Rectangle { 17 return image.Rect(0, 0, 256, 256) 18} 19 20func (i Image) At(x, y int) color.Color { 21 return color.RGBA{uint8(x), uint8(y), 255, 255} 22} 23func main() { 24 m := Image{} //Image{}インターフェースを定義 25 //Imageインターフェースを満たすために3つのメソッドが必要type Image interface{ここに書いてある} 26 pic.ShowImage(m) // 27} 28 29 30
image パッケージ
image パッケージは、以下の Image インタフェースを定義しています。
Go
1package image 2 3type Image interface { 4 ColorModel() color.Model 5 Bounds() Rectangle 6 At(x, y int) color.Color 7}
以上のことから、imageインターフェースを満たすために必要なメソッドは、ColorModel()
,Bounds()
,At(x, y int)
の3つであることは理解できています。
しかしながら、解答例ではimageインターフェースではなくimage structを定義し,それに必要な3つのメソッドを定義しています。
type Image struct{} ????ここ ~省略 ~ func main() { m := Image{} ... }
なぜinterfaceではなくstructで定義しているのでしょうか?
また今回の問題におけるinterfaceとstructの関係についても知りたいです。
まだまだGo初心者なので優しく教えていただけるとありがたいです????
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/06 23:19