登录
首页 >  Golang >  Go问答

接口没有实现error(缺少Error方法)

来源:stackoverflow

时间:2024-04-09 14:15:34 348浏览 收藏

大家好,今天本人给大家带来文章《接口没有实现error(缺少Error方法)》,文中内容主要涉及到,如果你对Golang方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

问题内容

我正在用 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)方法)

我在接口中定义了error作为返回类型,但是哪里错了?


解决方案


正如上面的注释,return c.convimg 返回一个函数。我应该这样写:

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

以上就是《接口没有实现error(缺少Error方法)》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>