Go 调用接口函数时出错?

Go 调用接口函数时出错?,go,Go,为什么当writer是io.writer的一个实现,试图调用Write()函数时,会显示此错误 this.writer.Write未定义(类型*io.writer没有字段或方法 (写) 使用writer io.writer而不使用*正如makhov所说,这是因为writer在MyClass的结构定义中是指向实现writer接口的指针,而不是实现writer接口本身的指针。因此,您的代码应该是: package main import "io" type MyClass struct{

为什么当
writer
io.writer
的一个实现,试图调用
Write()
函数时,会显示此错误

this.writer.Write未定义(类型*io.writer没有字段或方法 (写)


使用
writer io.writer
而不使用
*

正如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!"))
}
package main

import "io"

type MyClass struct{
    writer  *io.Writer
}

func (this *MyClass) WriteIt() {
    (*(this.writer)).Write([]byte("Hello World!"))
}