首頁 >後端開發 >Golang >golang read會阻塞麼

golang read會阻塞麼

(*-*)浩
(*-*)浩原創
2019-12-17 10:34:254602瀏覽

golang read會阻塞麼

Go語言中Reader介面定義了一個Read操作,實作了Reader介面的都有Read這個函數。           (建議學習:go

介面的定義如下:

type Reader interface {
        Read(p []byte) (n int, err error)
}

一次Read呼叫最多讀取len( p)位元組的資料到緩衝區p

n表示這次實際讀取到位元組數,(0 bf44f82f07a336968d9ee9f61508959a0)和err(非nil)

或本次Read操作返回n(>0)和nil,下次呼叫的時候再回傳0和err(非nil)

這兩種操作都是可能的,所以呼叫者永遠應該先按照n>0來判定是否有數據返回,而不是先判定err是否為nil

舉個例子說明,當某次調用到達文件末尾並且還讀取到了n位元組資料的時候,Reader的實作可能有兩種方式:

目前呼叫回傳n和EOF error

目前呼叫回傳n和nil,下次呼叫回傳0和EOF

Read的實作不應該回傳0和nil,也就是當回傳0的時候就應該回傳一個非nil的error,除非緩衝空間的大小為0,然後呼叫者應該忽略呼叫0和nil這種回傳值組合,當作什麼都沒發生,特別強調一下,這個回傳並不表示EOF了

以上是golang read會阻塞麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn