91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

golang中的read會發生阻塞嗎

發布時間:2020-06-17 10:23:30 來源:億速云 閱讀:1179 作者:Leah 欄目:編程語言

golang中的read會發生阻塞嗎?可能很多人對此沒有深入了解過,故而小編總結了這篇文章,通過這文章的講解,希望你能夠收獲更多知識。

Go語言中Reader接口定義了一個Read操作,實現了Reader接口的都有Read這個函數。

接口的定義如下:

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

一次Read調用最多讀取len(p)字節的數據到緩沖區p中

n表示這一次實際讀取到字節數,(0 <= n <= len(p))

err 表示這次讀取操作的報錯(如果有的話,沒有則是nil)

即使讀取到的字節數n小于len(p),在函數調用過程中調用主體也可能使用全部的p的空間(不知道這個說明是想表達什么)

當read到數據的時候,即使不夠len(p)(此時IO緩存中沒有數據了),Read操作通常會直接返回獲取到的數據而不是繼續等待IO緩存中到達更多的數據

當Read操作在成功讀取到n字節數據后遇到一個錯誤或者文件的末尾,它將會返回讀取的n字節數據,然后err的返回可能有兩種操作:

在本次Read操作的時候返回n(>0)和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有進一步的了解嗎?如果還想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黔南| 林芝县| 龙州县| 台前县| 南城县| 江门市| 禄丰县| 本溪| 大冶市| 舟山市| 峨山| 澄迈县| 太仆寺旗| 常熟市| 南岸区| 隆化县| 申扎县| 乌审旗| 巩义市| 湄潭县| 行唐县| 德兴市| 英德市| 巴青县| 天全县| 尼木县| 永兴县| 德钦县| 浦县| 雷州市| 恩平市| 磐安县| 南通市| 平利县| 宁阳县| 民县| 河曲县| 扎赉特旗| 武威市| 昌乐县| 东光县|