代码清单2-9 reader和writer演示
package main
import (
"fmt"
"log"
"os"
)
type FooReader struct{}
func (fooReader *FooReader) Read(b []byte) (int, error) {
fmt.Print("in >")
return os.Stdin.Read(b)
}
type FooWriter struct{}
func (fooWriter *FooWriter) Write(b []byte) (int, error) {
fmt.Print("out >")
return os.Stdout.Write(b)
}
func main() {
var (
reader FooReader
writer FooWriter
)
input := make([]byte, 4096)
s, err := reader.Read(input)
if err != nil {
log.Fatalln("Unable to read data")
}
fmt.Printf("Read %d bytes from stdin\n", s)
s, err = writer.Write(input)
if err != nil {
log.Fatalln("Unable to write data")
}
fmt.Printf("Wrote %d bytes to stdout\n", s)
}
使用io.Copy
import "io"
func main() {
var(
reader FooReader
writer FooWriter
)
if _,err := io.Copy(&writer,&reader);err != nil {
log.Fatalln("Unable to read/write data")
}
}