package main
import "io"
type MyClass struct{
writer *io.Writer
}
func (this *MyClass) WriteIt() {
this.writer.Write([]byte("Hello World!"))
}
为什么当writer
(io.Writer
的实现尝试调用Write()
函数时}显示此错误
this.writer.Write undefined(type * io.Writer没有字段或方法 写)
答案 0 :(得分:5)
正如makhov所说,这是因为writer
的结构定义中的MyClass
是指向实现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!"))
}
通常,做第一个选项会有意义(并且更加惯用)。
答案 1 :(得分:2)
使用不writer io.Writer
*