以下是 Go 库之一的片段。谁能指出r.(byteReader)? 语法用法对于新手来说不是很明显。byteReader是一个定义的接口,似乎不是io.Reader. 因为,这似乎是某种漂亮的代码,任何人都可以提供一些见解。
作者提到:“如果它不支持 ReadByte,则将其包装在 bufio.NewReader 中”模式。https://github.com/dave-andersen/deltagolomb/blob/master/deltagolomb.go
type byteReader interface {
io.Reader
ReadByte() (c byte, err error)
}
func makeReader(r io.Reader) byteReader {
if rr, ok := r.(byteReader); ok {
return rr
}
return bufio.NewReader(r)
}
慕斯709654
相关分类