2017-06-26 4 views
2

io.Pipeの進捗状況を把握したいと思います。残念ながら、私はio.PipeReaderをラップするためにそれを使用するように見えることはできません進行状況を保存するためにio.PipeReaderをラップします

type ProgressPipeReader struct { 
     io.PipeReader 
     progress int64 
} 

func (pr *ProgressPipeReader) Read(data []byte) (int, error) { 
     n, err := pr.PipeReader.Read(data) 

     if err == nil { 
       pr.progress += int64(n) 
     } 

     return n, err 
} 

:私はProgressPipeReader.progress内部バイト単位で進行状況を保存する、io.PipeReaderをラップし、次の構造体ProgressPipeReaderを思い付きました。次のスニペット

pr, pw := io.Pipe() 
pr = &ProgressPipeReader{PipeReader: pr} 

はエラー

cannot use pr (type *io.PipeReader) as type io.PipeReader in field value 

に任意のヒントが得?

答えて

2

エラーが示すように、io.PipeReaderフィールドに*io.PipeReaderの値を格納しようとしています。これを修正するには、構造体定義を正しい型に更新します。

type ProgressPipeReader struct { 
     *io.PipeReader 
     progress int64 
} 
関連する問題