界面未实现错误(缺少错误方法)

时间:2018-11-11 12:42:50

标签: go

我正在用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定义为返回类型,但是错在哪里呢?

1 个答案:

答案 0 :(得分:0)

如上所述,return c.convimg返回一个函数。我应该这样写:

func convert(c Converter, w io.Writer) error
    return c.convimg(w)