猿问

调用接口函数时出错?

package main


import "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)


Qyouu
浏览 155回答 2
2回答

倚天杖

正如 makhov 所说,这是因为writer在你的结构定义中MyClass是一个指向实现 Writer 接口的东西的指针,而不是实现了 writer 接口本身的东西。因此,您的代码应该是:package mainimport "io"type MyClass struct{    writer  io.Writer}func (this *MyClass) WriteIt() {    this.writer.Write([]byte("Hello World!"))}或者package mainimport "io"type MyClass struct{    writer  *io.Writer}func (this *MyClass) WriteIt() {    (*(this.writer)).Write([]byte("Hello World!"))}通常情况下,做第一个选项是有意义的(并且更惯用)。

慕码人2483693

writer  io.Writer不使用*
随时随地看视频慕课网APP

相关分类

Go
我要回答