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!"))
}