调用 reader.Validate(MyReader{}) 如何调用我的自定义 Read 方法?

https://github.com/golang/tour/blob/master/solutions/readers.go


package main


import "golang.org/x/tour/reader"


type MyReader struct{}


func (r MyReader) Read(b []byte) (int, error) { . //Q1) How is this method getting called?

//Q2) Its no where called in this source code

//Q3) What is the length of b ?

    for i := range b { //Q4) Why isn't throwing an infinite loop ?

        b[i] = 'A' 

    }

    return len(b), nil

}


func main() {

    reader.Validate(MyReader{})

}


芜湖不芜
浏览 253回答 1
1回答

蛊毒传说

它调用 Read(b []byte) 在这里查看源代码https://github.com/golang/tour/blob/master/reader/validate.go#L17Validate(io.Reader) 需要一个 io.Reader,它只需要一个 Read([]byte) 函数来填充接口。这就是您正在做的事情,因此 Validate 可以调用您的读者。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go