Golang io.ReadFull()函数及其示例

Golang io.ReadFull()函数及其示例

在Go语言中,io包提供了基本的I/O原语接口,其主要工作是封装这些原语的正在实现。Go语言中的 ReadFull() 函数用于从指定的读取器“r”中读取并复制到指定的缓冲区“buf”,所复制的字节数正好等于所指定缓冲区的长度。此外,该函数是在io包下定义的。在使用这些函数之前,您需要导入“io”包。

语法:

func ReadFull(r Reader, buf []byte) (n int, err error)

在此,”r”是所述读取器,”buf”是指定长度的缓冲区。

返回值: 它返回所指定缓冲区复制的字节数,并在读取的字节数少于所指定缓冲区的长度时返回错误。在此处,如果错误为零,则”n”所返回的将等于所指定的缓冲区长度。但是,如果没有读取任何字节数,则返回的错误为“EOF”。

注意: 如果在读取了较少字节数但未读取所有字节的情况下发生EOF,则此方法将返回ErrUnexpectedEOF错误。但是,如果指定的阅读器在阅读至少长度的缓冲区后返回错误,则该错误将被拒绝。

示例1:

// Golang程序来演示
//io.ReadFull()函数的用法

//包含主要包
package main

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

//调用main
func main() {

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

    //定义所指定长度的缓冲区
    //使用make关键字
    buffer := make([]byte, 4)

    //调用ReadFull方法及其参数
    n,err := io.ReadFull(reader,buffer)

    //如果错误不为空,则进入恐慌模式
    if err != nil {
        panic(err)
    }

    //打印输出
    fmt.Printf("缓冲区内的字节数: %d\n",n)
    fmt.Printf("缓冲区内的内容: %s\n",buffer)
}

输出:

缓冲区内的字节数: 4
缓冲区内的内容: Geek

在此,值“n”返回i.e, 4等于’buf’的长度,因为错误为零。

示例2:

// Golang程序来演示
//io.ReadFull()函数的用法

//包含主要包
package main

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

//调用main
func main() {

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

    //定义所指定长度的缓冲区
    //使用make关键字
    buffer := make([]byte, 6)

    //调用ReadFull方法及其参数
    n,err := io.ReadFull(reader,buffer)

    //如果错误不为空,则进入恐慌模式
    if err != nil {
        panic(err)
    }

    //打印输出
    fmt.Printf("缓冲区内的字节数: %d\n",n)
    fmt.Printf("缓冲区内的内容: %s\n",buffer)
}

输出:

恐慌: 意外的EOF

goroutine 1 [running]:
main.main()
    /tmp/sandbox503804944/prog.go:29 +0x210

在这里,上述代码中所示的缓冲区长度大于从读取器中读取的字节数,因此会抛出一个EOF错误。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程