Go語(yǔ)言中Reader接口定義了一個(gè)Read操作,實(shí)現(xiàn)了Reader接口的都有Read這個(gè)函數(shù)。 (推薦學(xué)習(xí):go)
接口的定義如下:
type Reader interface { Read(p []byte) (n int, err error) }
一次Read調(diào)用最多讀取len(p)字節(jié)的數(shù)據(jù)到緩沖區(qū)p中
n表示這一次實(shí)際讀取到字節(jié)數(shù),(0 <= n <= len(p))
err 表示這次讀取操作的報(bào)錯(cuò)(如果有的話(huà),沒(méi)有則是nil)
即使讀取到的字節(jié)數(shù)n小于len(p),在函數(shù)調(diào)用過(guò)程中調(diào)用主體也可能使用全部的p的空間(不知道這個(gè)說(shuō)明是想表達(dá)什么)
當(dāng)read到數(shù)據(jù)的時(shí)候,即使不夠len(p)(此時(shí)IO緩存中沒(méi)有數(shù)據(jù)了),Read操作通常會(huì)直接返回獲取到的數(shù)據(jù)而不是繼續(xù)等待IO緩存中到達(dá)