go語言 io原始碼解讀

2021-09-30 17:07:31 字數 969 閱讀 7124

reader 介面的定義如下:

type reader inte***ce
reader 方法

func readfromsource(reader io.reader,num int)(byte,error)  

return p,err

}

①呼叫.read方法

// read 介面 入參 byte 陣列p  ,返回 int型別 n 和 error

type reader inte***ce

// 翻譯文件:read入參長度大於len(p) 將返回0~len(p)和任何的錯誤。即使讀取的長度小於len(p),它會再呼叫的期間申請整個p長度的空間。如果有些資料是可用的,而不是len(p)位元組,read常規返回可用的資料,而不是等待更多的資料。如果在成功read了大於零的位元組過程發生了錯誤或者end-of-file情況。會返回non-nil或者在後續的呼叫返回錯誤。

②呼叫read方法

func (b *buffer) read(p byte) (n int, err error)

return 0, io.eof // var eof = errors.new("eof") 返回 eof錯誤 和 int 0

}n = copy(p, b.buf[b.off:]) // func copy(dst, src type) int 呼叫複製方法 複製的特殊情況從string切片陣列

b.off += n // 複製到byte陣列中

if n > 0

return n, nil

}

go原始碼解讀(二)

solve the 2,3,5 problem print all numbers with 2,3,or 5 as factor using channels.使用通道解決2,3,5問題 以2 3或5為因子列印所有數字 test the solution,silently.測試解決方案。packa...

go中errgroup原始碼解讀

來看下errgroup的實現 func main eg.go func error if err eg.wait err nil 模擬於waitgroup,errgroup增加了乙個對goroutine錯誤收集的作用。不過需要注意的是 errgroup返回的第乙個出錯的goroutine丟擲的err...

go語言學習 go語言原始碼檔案

二 庫原始碼檔案 三 總結 原始碼檔案分為三種,即 命令原始碼檔案 庫原始碼檔案和測試原始碼檔案。命令原始碼檔案 庫原始碼檔案 測試原始碼檔案 1.1命令原始碼檔案介紹 package main import flag包用於接收和解析命令引數 flag fmt包含有格式化i o函式 fmt var ...