Golang io.SectionReader.Read()函数的使用方法和示例

Golang io.SectionReader.Read()函数的使用方法和示例

在Go语言中,io包提供了I/O原语的基本接口,并将这些原语的实现封装起来。其中 SectionReader.Read() 函数用于返回NewSectionReader方法读取的字节数。该方法以缓存为参数,并在io包中定义。因此,您需要导入“io”包以使用这些函数。

语法:

func (s *SectionReader) Read(p []byte) (n int, err error)

这里,“s”是NewSectionReader方法返回的指向SectionReader的指针,“p”是一个指定字节长度的缓冲区。

返回值: 它返回指定长度缓冲区的内容的字节数,并返回任何错误。如果未发生错误,则返回“nil”。

以下示例演示了上述方法的用法:

示例1:

// Golang程序以说明io.SectionReader.Read()函数的使用方法

// 包括主包
package main

// 导入fmt、io和strings
import (
    "fmt"
    "io"
    "strings"
)

// 调用主
func main() {

    // 使用NewReader方法定义读取器
    reader := strings.NewReader("Geeks\n")

    // 使用其参数调用NewSectionReader方法
    r := io.NewSectionReader(reader, 2, 4)

    // 使用make关键字定义缓冲区
    buf := make([]byte, 3)

    // 使用其参数调用Read方法
    n, err := r.Read(buf)

    // 如果错误不为空,则会抛出错误
    if err != nil {
        panic(err)
    }

    // 输出
    fmt.Printf("Content in buffer: %s\n", buf)
    fmt.Printf("n: %v\n", n)
} 

输出:

Content in buffer: eks
n: 3

在上面的示例中,缓冲区的内容仅有三个字节,因此返回“3”,在读取指定内容时未发生错误,因此错误为“nil”。

示例2:

// Golang程序以说明io.SectionReader.Read()函数的使用方法

// 包括主包
package main

// 导入fmt、io和strings
import (
    "fmt"
    "io"
    "strings"
)

// 调用主
func main() {

    // 使用NewReader方法定义读取器
    reader := strings.NewReader("GeeksforGeeks\nis\na\nCS-Portal.")

    // 使用其参数调用NewSectionReader方法
    r := io.NewSectionReader(reader, 6, 34)

    // 使用make关键字定义缓冲区
    buf := make([]byte, 25)

    // 使用其参数调用Read方法
    n, err := r.Read(buf)

    // 如果错误不为空,则会抛出错误
    if err != nil {
        panic(err)
    }

    // 输出
    fmt.Printf("Content in buffer: %s\n", buf)
    fmt.Printf("n: %v\n", n)
} 

输出:

panic: EOF

goroutine 1 [running]:
main.main()
    /tmp/sandbox125171693/prog.go:31 +0x25a

在这里,上面示例中使用的缓冲区中的内容字节数少于指定的字节数,因此会抛出EOF错误。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程