Golang io.MultiReader()的用法及示例
在Golang中,当需要同时读取多个Reader时,可以使用io.MultiReader()函数将多个Reader合并成一个单一的Reader进行读取。本文将介绍io.MultiReader()函数的具体用法及示例代码。
io.MultiReader()函数介绍
io.MultiReader()函数的定义如下:
func MultiReader(readers ...io.Reader) io.Reader
MultiReader函数接收任意数量的Reader接口类型参数,并返回一个io.Reader接口类型的值。当读取返回的Reader时,它按照给定的顺序从各个Reader中读取数据。当一个Reader被完全读取后,读取会继续在下一个Reader上进行。
示例代码
下面是使用io.MultiReader()函数读取多个Reader的示例代码:
package main
import (
"fmt"
"io"
"strings"
)
func main() {
reader1 := strings.NewReader("Hello, ")
reader2 := strings.NewReader("World!")
reader := io.MultiReader(reader1, reader2)
buf := make([]byte, 10)
for {
n, err := reader.Read(buf)
if err != nil && err != io.EOF {
panic(err)
}
if n == 0 {
break
}
fmt.Print(string(buf[:n]))
}
}
上述示例代码中,我们定义了两个字符串读取器reader1和reader2,分别用来读取”Hello, “和”World!”两个字符串。然后,我们将两个读取器传入io.MultiReader()函数中,创建一个新的Reader。最后,我们使用新的Reader按顺序读取两个字符串,并输出到控制台。
运行上述程序,输出结果为:
Hello, World!
总结
io.MultiReader()函数是Golang中用于将多个Reader合并成一个单一的Reader进行读取的函数。当一个Reader被完全读取后,读取会继续在下一个Reader上进行。在实际应用中,可以使用io.MultiReader()函数来读取多个流式数据源的数据。