#go
#Вперед
Вопрос:
Я просыпаюсь через упражнение: изображения на https://tour.golang.org/methods/25 и я столкнулся с проблемой. Вот мой код…
package main
import (
"golang.org/x/tour/pic"
"image"
)
type Image struct{
image *image.RGBA
}
func main() {
rect := image.Rect(0,0,255,255)
myImage := image.NewRGBA(rect)
m := Image{myImage}
pic.ShowImage(m)
}
это выдает ошибку…
tmp/sandbox089594299/main.go:16: cannot use m (type Image) as type image.Image in argument to pic.ShowImage:
Image does not implement image.Image (missing At method)
Но image.NewRGBA
возвращает a *NRGBA
, и у этого действительно есть At()
метод. Также я предполагаю, что, поскольку At()
метод является последним методом, требуемым image.Image
интерфейсом, он находит два других необходимых methods…so что случилось с At()
этим ?
image.NRGBA: https://golang.org/pkg/image/#NRGBA
изображение.Интерфейс изображения: https://golang.org/pkg/image/#Image
Ответ №1:
Ваш тип Image
не реализует At
метод. Если вы хотите, чтобы ваш тип наследовал методы, реализованные *image.RGBA
, используйте анонимное поле:
type Image struct{
*image.RGBA
}