Я пишу программу конвертации изображений с Golang. Вот один из моих файлов.
package main
import (
"image"
"image/gif"
"image/jpeg"
"image/png"
"io"
)
type Converter interface {
convimg(io.Writer) error
}
type jpgConverter struct {
img image.Image
}
type pngConverter struct {
img image.Image
}
type gifConverter struct {
img image.Image
}
func convert(c Converter) error {
return c.convimg //compile error
}
func (c jpgConverter) convimg(dist io.Writer) error {
return jpeg.Encode(dist, c.img, nil)
}
func (c pngConverter) convimg(dist io.Writer) error {
return png.Encode(dist, c.img)
}
func (c gifConverter) convimg(dist io.Writer) error {
return gif.Encode(dist, c.img, nil)
}
Я использую интерфейс для утки, так что я могу использовать один и тот же метод для любого преобразования типов.
Но в методе convert
произошла ошибка компиляции, а в сообщении об ошибке указано cannot use c.convimg (type func(io.Writer) error) as type error in return argument: func(io.Writer) error does not implement error (missing Error method)
.
Я определяю error
как тип возвращаемого значения в интерфейсе, но где неправильная точка?