Golang io.CopyBuffer()函数的使用示例

Golang io.CopyBuffer()函数的使用示例

在Go语言中,io包提供了基本的I/O原语接口。它的主要功能是封装这些原语的实现。Go语言中的 CopyBuffer() 函数与Copy()方法相同,但唯一的例外是,如果需要,它通过提供的缓冲区进行展示,而不是分配一个临时缓冲区。如果src由WriterTo实现,或者dst由ReaderFrom实现,则不会使用缓冲区执行复制操作。此外,该函数在io包中定义。在这里,您需要导入“io”包以使用这些函数。

语法:

func CopyBuffer(dst Writer,src Reader,buf []byte) (written int64,err error)

这里,“dst”是目标,“src”是从哪里复制内容到目标的源,“buf”是允许内存中永久空间的缓冲区。

返回值: 它返回类型为int64的字节数,这些字节被复制到“dst”,如果从src到dst复制时遇到任何错误,则返回第一个错误。但是,如果缓冲区为零则拨出一个,否则如果缓冲区长度为零则CopyBuffer会恐慌。

以下示例说明了上述方法的使用:

示例1:

// Golang程序来演示io.CopyBuffer()函数的使用
  
// 包含主函数
package main
  
// 导入fmt、io、os和strings
import (
    "fmt"
    "io"
    "os"
    "strings"
)
  
// 调用主函数
func main() {
  
    // 定义源
    src := strings.NewReader("GfG\n")
  
    // 使用Stdout定义目标
    dst := os.Stdout
  
    // 使用make关键字定义长度为1的缓冲区
    buffer := make([]byte, 1)
  
    // 带有它的参数的调用CopyBuffer方法
    bytes,err :=io.CopyBuffer(dst,src,buffer)
  
    // 如果错误不为空,则恐慌
    if err != nil {
        panic(err)
    }
  
    // 输出
    fmt.Printf("字节数量: %d\n", bytes)
} 

输出:

GfG
字节数量:4

示例2:

// Golang程序来演示io.CopyBuffer()函数的使用
  
// 包含主函数
package main
  
// 导入fmt、io、os和strings
import (
    "fmt"
    "io"
    "os"
    "strings"
)
  
// 调用主函数
func main() {
  
    // 定义两个源
    src1 := strings.NewReader("GfG\n")
    src2 := strings.NewReader("GeeksforGeeks is a CS-Portal\n")
  
    // 使用Stdout定义目标
    dst := os.Stdout
  
    // 使用make关键字定义长度为1的缓冲区
    buffer := make([]byte, 1)
  
    // 带有它的参数的调用CopyBuffer方法
    bytes1,err :=io.CopyBuffer(dst,src1,buffer)
    bytes2,err :=io.CopyBuffer(dst,src2,buffer)
  
    // 如果错误不为空,则恐慌
    if err != nil {
        panic(err)
    }
  
    // 输出
    fmt.Printf("字节数量是: %d\n", bytes1)
    fmt.Printf("字节数量是: %d\n", bytes2)
} 

输出:

GfG
GeeksforGeeks is a CS-Portal
字节数量是: 4
字节数量是: 29

在上面的示例中,使用字符串的NewReader()方法来读取要复制的内容。并且在此处使用“Stdout”以创建默认文件描述符,其中所复制的内容被写入。此外,在调用CopyBuffer()方法时重用了相同的缓冲区,无需分配额外的缓冲区。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程