Go 如何解释该程序实现接口
看看这个消息来源 特别是这一废料:Go 如何解释该程序实现接口,go,Go,看看这个消息来源 特别是这一废料: bw := NewWriter(b) w, ok := bw.wr.(io.ReaderFrom) 我不明白b是字节元素,NewWrite()取io.Writer 和bw.wr.(io.ReaderFrom),如何使用 “(io.ReaderFrom)”的函数是什么意思 及 w是io.write,在io/io.go中,ReadFrom是接口 type ReaderFrom interface { ReadFrom(r Reader) (n int64
bw := NewWriter(b)
w, ok := bw.wr.(io.ReaderFrom)
我不明白b是字节元素,NewWrite()取io.Writer
和bw.wr.(io.ReaderFrom),如何使用
“(io.ReaderFrom)”的函数是什么意思
及
w是io.write,在io/io.go中,ReadFrom是接口
type ReaderFrom interface {
ReadFrom(r Reader) (n int64, err error)
}
如何在此源代码中实现此接口
在这个源代码中,我找不到任何地方可以实现。这是一个
在您的情况下,它断言w
不是零,并且w
中存储的值是接口io.ReaderFrom
<如果代码>确定为真
,否则为假
。此代码没有检查ok
变量,因为作者确信它将从接口实现io.reader。它是一个变量
type ReaderFrom interface {
ReadFrom(r Reader) (n int64, err error)
}
在您的情况下,它断言w
不是零,并且w
中存储的值是接口io.ReaderFrom
<如果代码>确定
为真
,否则为假
。此代码没有检查ok
变量,因为作者确信它将从接口实现io.reader。
type ReaderFrom interface {
ReadFrom(r Reader) (n int64, err error)
}
bytes.Buffer
实现func(b*Buffer)写入(p[]byte)(n int,err error)
,因此它属于io.Writer
类型,可以作为func NewWriter(w io.Writer)*Writer的参数
bytes.Buffer
还实现了func(b*Buffer)ReadFrom(r io.Reader)(n int64,err error)
,因此它的类型为io.ReadFrom
,允许调用fmt.Println(w.ReadFrom(s))
正如@akond提到的(io.ReaderFrom)
是类型断言,表达式w,ok:=bw.wr.(io.ReaderFrom)
断言Writer
结构的wr
字段也是类型io.ReaderFrom
为了进一步阅读检查,请参考类似代码。
bytes.Buffer
实现func(b*Buffer)写入(p[]byte)(n int,err error)
,因此它属于io.Writer
类型,可以作为func NewWriter(w io.Writer)*Writer的参数
bytes.Buffer
还实现了func(b*Buffer)ReadFrom(r io.Reader)(n int64,err error)
,因此它的类型为io.ReadFrom
,允许调用fmt.Println(w.ReadFrom(s))
- 正如@akond提到的
(io.ReaderFrom)
是类型断言,表达式w,ok:=bw.wr.(io.ReaderFrom)
断言Writer
结构的wr
字段也是类型io.ReaderFrom
对于进一步的读取检查,它引用了类似的代码。在本例中,ReadFrom方法是通过字节实现的。Buffer,请参阅在本例中,ReadFrom方法是通过字节实现的。Buffer,请参阅