упражнение golang: изображения отсутствуют в методе

#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   
}
  

См. https://golang.org/doc/effective_go.html#embedding .