亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

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

高雄县| 汉源县| 丰原市| 新建县| 曲靖市| 定结县| 汉中市| 新乐市| 白朗县| 师宗县| 津市市| 即墨市| 商都县| 聂荣县| 三门峡市| 漳州市| 平定县| 白河县| 蓬安县| 兰考县| 乾安县| 方城县| 安塞县| 顺义区| 北安市| 新乡县| 沅陵县| 积石山| 甘洛县| 剑川县| 孟连| 宽甸| 改则县| 县级市| 手游| 绥德县| 芦山县| 盐边县| 肥城市| 友谊县| 长武县|