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()方法时重用了相同的缓冲区,无需分配额外的缓冲区。
极客教程