package mainimport "io"type MyClass struct{ writer *io.Writer}func (this *MyClass) WriteIt() { this.writer.Write([]byte("Hello World!"))}為什么 whenwriter是 的一個(gè)實(shí)現(xiàn)io.Writer,嘗試調(diào)用該Write()函數(shù)時(shí)向我顯示此錯誤this.writer.Write 未定義(類型 *io.Writer 沒有字段或方法 Write)
2 回答

倚天杖
TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超3個(gè)贊
正如 makhov 所說,這是因?yàn)閣riter在你的結(jié)構(gòu)定義中MyClass是一個(gè)指向?qū)崿F(xiàn) Writer 接口的東西的指針,而不是實(shí)現(xiàn)了 writer 接口本身的東西。因此,您的代碼應(yīng)該是:
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!"))
}
通常情況下,做第一個(gè)選項(xiàng)是有意義的(并且更慣用)。
- 2 回答
- 0 關(guān)注
- 186 瀏覽
添加回答
舉報(bào)
0/150
提交
取消