Golang io.NewSectionReader()函数的用法及示例

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。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程