为了账号安全,请及时绑定邮箱和手机立即绑定

调用接口函数时出错?

调用接口函数时出错?

Go
Qyouu 2021-09-13 16:52:34
package mainimport "io"type MyClass struct{    writer  *io.Writer}func (this *MyClass) WriteIt() {    this.writer.Write([]byte("Hello World!"))}为什么 whenwriter是 的一个实现io.Writer,尝试调用该Write()函数时向我显示此错误this.writer.Write 未定义(类型 *io.Writer 没有字段或方法 Write)
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

正如 makhov 所说,这是因为writer在你的结构定义中MyClass是一个指向实现 Writer 接口的东西的指针,而不是实现了 writer 接口本身的东西。因此,您的代码应该是:


package main


import "io"


type MyClass struct{

    writer  io.Writer

}


func (this *MyClass) WriteIt() {

    this.writer.Write([]byte("Hello World!"))

}

或者


package main


import "io"


type MyClass struct{

    writer  *io.Writer

}


func (this *MyClass) WriteIt() {

    (*(this.writer)).Write([]byte("Hello World!"))

}

通常情况下,做第一个选项是有意义的(并且更惯用)。


查看完整回答
反对 回复 2021-09-13
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

writer  io.Writer不使用*


查看完整回答
反对 回复 2021-09-13
  • 2 回答
  • 0 关注
  • 154 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信