私は Go を学んでいて、インターフェイスImage
を実装するために次の構造体 ( ) を書きました。image.Image
package main
import (
"image"
"image/color"
"code.google.com/p/go-tour/pic"
)
type Image struct{}
func (img Image) ColorModel() color.Model {
return color.RGBAModel
}
func (img Image) Bounds() image.Rectangle {
return image.Rect(0, 0, 100, 100)
}
func (img Image) At(x, y int) color.Color {
return color.RGBA{100, 100, 255, 255}
}
func main() {
m := Image{}
pic.ShowImage(m)
}
image/color
インポートせずにインポートするだけの場合image
、image.Rect
未定義です。なんで?image/color
のメソッドとプロパティを既にカバーするべきではありませんimage
か?
また、関数レシーバーを から に変更する(img Image)
と(img *Image)
、エラーが発生します。
Image does not implement image.Image (At method requires pointer receiver)
何故ですか?(img *Image)
ポインターレシーバーを示していませんか?