我试图了解 Go 的接口和嵌入。
我在这里尝试做的是创建我自己的自定义writer,reader 并且每个人都实现io.Writer或io.Reader
现在我想将这些实现基本接口的自定义结构嵌入到另一个实现Read/Write/Close. 下面的代码是我到目前为止的代码,但是当我运行它时,出现以下错误
cannot use test (type MyReadWriteCloser) as type io.Writer in argument to fmt.Fprintf:
MyReadWriteCloser does not implement io.Writer (missing Write method)
我认为当你在另一个结构中嵌入一个结构时,你也会得到嵌入结构的方法。有人可以告诉我我错过了什么吗?
package main
import (
"fmt"
"io"
)
type MyWriter struct {
w io.Writer
}
func (m MyWriter) Write(b []byte) (n int, err error) {
// encrypt b and write to underlying writer
m.w.Write(b)
return
}
type MyReader struct {
r io.Reader
}
func (m MyReader) Read(b []byte) (n int, err error) {
// decrypt b
m.r.Read(b)
return
}
type MyReadWriteCloser struct {
MyWriter
MyReader
}
func (m MyReadWriteCloser) Close() error {
return nil
}
func main() {
fmt.Println("main start")
r, w := io.Pipe()
test := MyReadWriteCloser{
MyWriter{w},
MyReader{r},
}
fmt.Fprintf(test, "hello world\n")
}
子衿沉夜
九州编程
相关分类