📜  Golang 中的 io.Copy()函数示例

📅  最后修改于: 2021-10-25 02:34:34             🧑  作者: Mango

在 Go 语言中, io包为 I/O 原语提供基本接口。它的主要工作是封装这种原语之王的持续实现。 Go 语言中的Copy()函数用于从指定的 src ie, source 复制到dst ie, destination 直到在 src 上获得 EOF ie,文件结尾或抛出错误。在这里,当srcWriterTo接口实现时,副本是通过调用 src.WriteTo(dst) 实现的。否则,如果 dst 是由ReaderFrom接口实现的,那么副本是通过调用 dst.ReadFrom(src) 来实现的。而且,这个函数是在io包下定义的。在这里,您需要导入“io”包才能使用这些功能。

句法:

func Copy(dst Writer, src Reader) (written int64, err error)

这里,“dst”是目的地,“src”是内容复制到目的地的来源。
返回值:它返回复制到“dst”的 int64 类型的字节总数,并返回从 src 复制到 dst 时遇到的第一个错误(如果有)。如果复制没有错误,则返回“nil”。

下面的例子说明了上述方法的使用:

示例 1:

// Golang program to illustrate the usage of
// io.Copy() function
  
// Including main package
package main
  
// Importing fmt, io, os, and strings
import (
    "fmt"
    "io"
    "os"
    "strings"
)
  
// Calling main
func main() {
  
    // Defining source
    src := strings.NewReader("GeeksforGeeks\n")
  
    // Defining destination using Stdout
    dst := os.Stdout
  
    // Calling Copy method with its parameters
    bytes, err := io.Copy(dst, src)
  
    // If error is not nil then panics
    if err != nil {
        panic(err)
    }
  
    // Prints output
    fmt.Printf("The number of bytes are: %d\n", bytes)
}

输出:

GeeksforGeeks
The number of bytes are: 14

示例 2:

// Golang program to illustrate the usage of
// io.Copy() function
  
// Including main package
package main
  
// Importing fmt, io, os, and strings
import (
    "fmt"
    "io"
    "os"
    "strings"
)
  
// Calling main
func main() {
  
    // Defining source
    src := strings.NewReader("Nidhi: F\nRahul: M\nNisha: F\n")
  
    // Defining destination using Stdout
    dst := os.Stdout
  
    // Calling Copy method with its parameters
    bytes, err := io.Copy(dst, src)
  
    // If error is not nil then panics
    if err != nil {
        panic(err)
    }
  
    // Prints output
    fmt.Printf("The number of bytes are: %d\n", bytes)
}

输出:

Nidhi: F
Rahul: M
Nisha: F
The number of bytes are: 27

在这里,在上面的示例中,字符串的NewReader() 方法用于从要复制的内容读取的位置。此处使用“Stdout”以创建写入复制内容的默认文件描述符。