Еще нужно будет реализовать метод Close у вашего Reader'a чтобы небыло утечек файловых дескрипторов
func (br *BlobReader) Close() error {
if br.reader == nil {
return nil
}
return br.reader.Close()
}
...
blobReader := NewBlobReader(keys)
defer func() {
_ = blobReader.Close()
}()
Так нормально?