io
包指定了 io.Reader
接口, 它表示從數據流結尾讀取。
Go 標准庫包含了這個接口的許多實現, 包括文件、網絡連接、壓縮、加密等等。
io.Reader
接口有一個 Read
方法:
func (T) Read(b []byte) (n int, err error)
Read
用數據填充指定的字節 slice,並且返回填充的字節數和錯誤信息。 在遇到數據流結尾時,返回 io.EOF
錯誤。
例子代碼創建了一個 strings.Reader
。 並且以每次 8 字節的速度讀取它的輸出。
package main
import (
"fmt"
"io"
"strings"
)
func main() {
r := strings.NewReader("Hello, Reader!")
b := make([]byte, 8)
for {
n, err := r.Read(b)
fmt.Printf("n = %v err = %v b = %v\n", n, err, b)
fmt.Printf("b[:n] = %q\n", b[:n])
if err == io.EOF {
break
}
}
}