Golang io.NewSectionReader()函数的用法及示例
在Go语言中,io包提供了基本的I/O原语接口。其主要工作是封装此类原语的实现。Go语言中的 NewSectionReader() 函数用于返回一个SectionReader,它从指定的读取器“r”读取,从指定的偏移量“off”开始,并在给定的“n”字节数后终止,即EOF(文件结尾)。此外,该函数在io包中定义。在此,您需要导入“io”包以使用这些函数。
语法:
func NewSectionReader(r ReaderAt, off int64, n int64) *SectionReader
在此, “r”是要读取内容的读取器,“off”是读取内容的起始偏移量,“n”是读取的内容长度。
返回值: 返回一个“SectionReader”,它从指定的读取器“r”读取,从指定的偏移量“off”开始,并在给定的“n”字节数后终止,即EOF(文件结尾)。
下面的示例说明了上述方法的用法:
示例1:
// Golang程序说明使用
// io.NewSectionReader()函数
// 包含主要程序
package main
// 导入 fmt,io,strings 和 os 包
import (
"fmt"
"io"
"os"
"strings"
)
// 调用主函数
func main() {
// 使用NewReader方法定义读取器
reader := strings.NewReader("Geek\n")
// 使用其参数调用NewSectionReader方法
r := io.NewSectionReader(reader, 3, 5)
// 使用其参数调用Copy方法
Reader,err:= io.Copy(os.Stdout, r)
// 如果错误不为空,则抛出异常
if err != nil {
panic(err)
}
// 输出结果
fmt.Printf("n:%v\n", Reader)
}
输出:
ks
n: 3
在上面的示例中,使用Copy()方法来返回输出,使用strings的NewReader()方法写入要读取的内容。
示例2:
// Golang程序说明使用
// io.NewSectionReader()函数
// 包含主要程序
package main
// 导入 fmt,io,strings 和 os 包
import (
"fmt"
"io"
"os"
"strings"
)
// 调用主函数
func main() {
// 使用NewReader方法定义读取器
reader := strings.NewReader("GeeksforGeeks\nis\na\nCS-Portal.\n")
// 使用其参数调用NewSectionReader方法
r := io.NewSectionReader(reader, 7, 40)
// 使用其参数调用Copy方法
Reader,err:= io.Copy(os.Stdout, r)
// 如果错误不为空,则抛出异常
if err != nil {
panic(err)
}
// 输出结果
fmt.Printf("n:%v\n", Reader)
}
输出:
rGeeks
is
a
CS-Portal.
n: 23
在此示例中,内容从偏移量“7”开始,并在字节数达到“40”后终止。但在此处返回的输出内容为“23”字节,因此“n”为23。