type Reader interface {
Read(p []byte) (n int, err error)
}
type LimitedReader struct {
R Reader // underlying reader
N int64 // max bytes remaining
}
func (l *LimitedReader) Read(p []byte) (n int, err error) {
}
这里LimitedReader实现了 Reader 接口的Read方法
func LimitReader(r Reader, n int64) Reader { return &LimitedReader{r, n} }
1.所以当你传入一个实现了Reader接口的类型的时候,LimitedReader.R=r,
eg: var file=new os.File()
LimitReader(file,100)的时候,Reader的是通过file实现的,
2.{ return &LimitedReader{r, n} }等同于
{ var reader Reader=&LimitedReader{r, n}
return reader
}
所以这时
type LimitedReader struct {
R Reader // file
N int64 // 100
}
PS:http://www.cnblogs.com/hustcat/p/4007126.html
有疑问加站长微信联系(非本文作者)