📅  最后修改于: 2023-12-03 14:41:33.971000             🧑  作者: Mango
io.TeeReader()
函数示例在 Golang 中,io
包提供了一系列函数用于处理输入和输出流。其中 io.TeeReader()
函数是一个非常有用的函数,用于同时读取输入流并将其复制到输出流中。
io.TeeReader()
函数的作用是将一个输入流 Reader
复制到一个输出流 Writer
中,并返回一个新的 Reader
,该 Reader
可以同时读取输入流并将其复制到输出流中。这在需要同时对输入流进行处理并将其保存到输出流中时非常方便。
函数签名如下:
func TeeReader(r Reader, w Writer) Reader
下面是一个示例程序,演示如何使用 io.TeeReader()
函数将输入流复制到输出流,并同时输出到标准输出:
package main
import (
"fmt"
"io"
"os"
"strings"
)
func main() {
input := strings.NewReader("Hello, Golang!")
output := os.Stdout
reader := io.TeeReader(input, output)
buf := make([]byte, 20)
n, err := reader.Read(buf)
if err != nil && err != io.EOF {
fmt.Println("Error:", err)
return
}
fmt.Printf("Read %d bytes: %s\n", n, buf[:n])
}
在上面的示例中,我们使用 strings.NewReader()
创建了一个字符串输入流,并使用 os.Stdout
作为输出流。然后,我们通过 io.TeeReader()
函数创建了一个新的 Reader
,该 Reader
可以同时读取输入流并将其复制到输出流中。
接下来,我们创建了一个缓冲区 buf
,并使用 Reader.Read()
方法从 TeeReader
读取数据并将其存储到缓冲区中。最后,我们输出读取到的字节数和缓冲区的内容。
运行上述程序,将会输出以下结果:
Read 14 bytes: Hello, Golang!
可以看到,TeeReader
同时将输入数据传递给了输出流,并正确地将数据读取到缓冲区中。
io.TeeReader()
函数是 Golang 中非常有用的一个函数,可以将输入流复制到输出流中,并返回一个新的 Reader
。这使得我们可以同时对输入流进行处理并将其保存到输出流中,非常方便。
希望本示例对你理解和使用 io.TeeReader()
函数有所帮助!