https://play.golang.org/p/LHkVGzmC7N
看看这个来源。
特别是这个废料:
bw := NewWriter(b)
w, ok := bw.wr.(io.ReaderFrom)
不明白b是bytes元素,NewWrite()取一个io.Writer。 和bw.wr.(io.ReaderFrom),怎么用?
“.(io.ReaderFrom)”的函数是什么意思?
和
fmt.Println(w.ReadFrom(s))
w 是 io.write,在 io/io.go 中 ReadFrom(s) 是接口(interface)。
type ReaderFrom interface {
ReadFrom(r Reader) (n int64, err error)
}
如何在这个源码中实现这个接口(interface)?
在这个来源中,我找不到任何地方可以实现。
最佳答案
这是一个type assertion .
在您的例子中,它断言 w
不是 nil,并且存储在 w
中的值属于 io.ReaderFrom
接口(interface)。 ok
如果是,则为 true
,否则为 false
。此代码不检查 ok
变量,因为作者确信它将实现 io.ReaderFrom
接口(interface)。
关于go - 如何解释这个程序实现接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45294899/