[英]How to return a empty io.Reader?
我有一個返回io.Reader的函數:
func getData(bucket string, key string) (io.Reader, error) {
svc := s3.New(cfg)
req := svc.GetObjectRequest(&s3.GetObjectInput{
Bucket: aws.String(bucket),
Key: aws.String(key),
})
res, err := req.Send()
if err != nil {
// How to return a empty io.Reader here?
return bytes.NewReader([]byte), err
}
return res.Body, nil
}
我想知道如何從err塊返回空的io.Reader。
謝謝。
如果返回的錯誤值為非nil
,通常其他參數的值將保留為零 ,如果是io.Reader
(接口類型),則其他參數應為nil
:
return nil, err
調用者有責任首先始終檢查返回的錯誤,並且只有在錯誤為nil
時才繼續使用其他返回值。 這是一般的“規則”。 當然可能會有例外,在這種情況下,您應該記錄異常行為。
其實有什么錯與非一起提供其他值是nil
誤差,而且往往是非常有用的。 典型的示例是io.Reader.Read()
方法,該方法記錄了實現(必須)如何工作:
它返回讀取的字節數(0 <= n <= len(p))和遇到的任何錯誤。
...當成功讀取n> 0個字節后,Read遇到錯誤或文件結束條件時,它將返回讀取的字節數。
所以,即使Reader.Read()
返回非nil
誤差,它也報告有多少個字節是能夠成功地閱讀時遇到錯誤之前,所以你可以處理/使用多達n
從切片字節。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.