当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Golang io.MultiWriter()用法及代码示例


在Go语言中,io软件包为I /O原语提供基本接口。它的主要工作是封装此类原始之王的正在进行的实现。 Go语言中的MultiWriter()函数用于创建写入器,该写入器将其写入复制到每个给定的写入器中,这与Unix命令tee(1)相同。在这里,每一次写入均被逐一写入每个包含的写入器中。而且,此函数在io包下定义。在这里,您需要导入“io”包才能使用这些函数。

用法:

func MultiWriter(writers ...Writer) Writer

在此,“writers”是在此函数中指定为参数的写入程序数。

返回值:它返回一个Writer,其中包括指定缓冲区中存在的字节数,并且还返回错误(如果有)。而且,如果声明的写手返回错误,则整个写操作将停止并且不会扩展到列表的下方。

范例1:



// Golang program to illustrate the usage of 
// io.MultiWriter() function 
  
// Including main package 
package main 
  
// Importing fmt, io, bytes, and strings 
import ( 
    "bytes"
    "fmt"
    "io"
    "strings"
) 
  
// Calling main 
func main() { 
  
    // Defining reader using NewReader method 
    reader:= strings.NewReader("Geeks") 
  
    // Defining two buffers 
    var buffer1, buffer2 bytes.Buffer 
  
    // Calling MultiWriter method with its parameters 
    writer:= io.MultiWriter(&buffer1, &buffer2) 
  
    // Calling Copy method with its parameters 
    n, err:= io.Copy(writer, reader) 
  
    // If error is not nil then panics 
    if err != nil { 
        panic(err) 
    } 
  
    // Prints output 
    fmt.Printf("Number of bytes in the buffer:%v\n", n) 
    fmt.Printf("Buffer1:%v\n", buffer1.String()) 
    fmt.Printf("Buffer2:%v\n", buffer2.String()) 
}

输出:

Number of bytes in the buffer:5
Buffer1:Geeks
Buffer2:Geeks

在此,Copy()方法用于返回缓冲区中包含的字节数。并且这里两个缓冲区的内容都与声明的写程序将其写操作复制到所有其他写程序相同。

范例2:

// Golang program to illustrate the usage of 
// io.MultiWriter() function 
  
// Including main package 
package main 
  
// Importing fmt, io, bytes, and strings 
import ( 
    "bytes"
    "fmt"
    "io"
    "strings"
) 
  
// Calling main 
func main() { 
  
    // Defining reader using NewReader method 
    reader:= strings.NewReader("GeeksforGeeks\nis\na\nCS-Portal!") 
  
    // Defining two buffers 
    var buffer1, buffer2 bytes.Buffer 
  
    // Calling MultiWriter method with its parameters 
    writer:= io.MultiWriter(&buffer1, &buffer2) 
  
    // Calling Copy method with its parameters 
    n, err:= io.Copy(writer, reader) 
  
    // If error is not nil then panics 
    if err != nil { 
        panic(err) 
    } 
  
    // Prints output 
    fmt.Printf("Number of bytes in the buffer:%v\n", n) 
    fmt.Printf("Buffer1:%v\n", buffer1.String()) 
    fmt.Printf("Buffer2:%v\n", buffer2.String()) 
}

输出:

Number of bytes in the buffer:29
Buffer1:GeeksforGeeks
is
a
CS-Portal!
Buffer2:GeeksforGeeks
is
a
CS-Portal!



相关用法


注:本文由纯净天空筛选整理自nidhi1352singh大神的英文原创作品 io.MultiWriter() Function in Golang with Examples。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。