package main
import (
"bytes"
"fmt"
"io"
"log"
"os"
"strings"
)
func copy1() {
r := strings.NewReader("wang fan")
buf := make([]byte, 20)
r.Read(buf)
fmt.Printf("string(buf): %v\n", string(buf))
}
func copy2() {
r := strings.NewReader("hello world")
// 输出在控制台
_, err := io.Copy(os.Stdout, r)
if err != nil {
log.Fatal(err)
}
}
func copy3() {
r1 := strings.NewReader("first reader\n")
r2 := strings.NewReader("second reader\n")
buf := make([]byte, 8)
_, err1 := io.CopyBuffer(os.Stdout, r1, buf)
if err1 != nil {
log.Fatal(err1)
}
_, err2 := io.CopyBuffer(os.Stdout, r2, buf)
if err2 != nil {
log.Fatal(err2)
}
}
func copy4() {
r := strings.NewReader("some io.Reader stream to be read\n")
lr := io.LimitReader(r, 6)
if _, err := io.Copy(os.Stdout, lr); err != nil {
log.Fatal(err)
}
}
func copy5() {
r1 := strings.NewReader("first reader ")
r2 := strings.NewReader("second reader ")
r3 := strings.NewReader("third reader\n")
r := io.MultiReader(r1, r2, r3)
if _, err := io.Copy(os.Stdout, r); err != nil {
log.Fatal(err)
}
}
func copy6() {
r := strings.NewReader("some io.Reader stream to be read\n")
var buf1, buf2 bytes.Buffer
w := io.MultiWriter(&buf1, &buf2)
if _, err := io.Copy(w, r); err != nil {
log.Fatal(err)
}
fmt.Printf("buf1.String(): %v\n", buf1.String())
fmt.Printf("buf2.String(): %v\n", buf2.String())
}
func copy7() {
pr, pw := io.Pipe()
go func() {
fmt.Fprint(pw, "some io.Reader stream to be read\n")
pw.Close()
}()
if _, err := io.Copy(os.Stdout, pr); err != nil {
log.Fatal(err)
}
}
func copy8() {
r := strings.NewReader("Go is general-purpose language designed with systems programming in mind.")
b, err := io.ReadAll(r)
if err != nil {
log.Fatal(err)
}
fmt.Printf("b: %v\n", string(b))
}
func copy9() {
// 拆一部分
r := strings.NewReader("Go is general-purpose language designed with systems programming in mind.")
s := io.NewSectionReader(r, 5, 17)
if _, err := io.Copy(os.Stdout, s); err != nil {
log.Fatal(err)
}
}
func main() {
// copy1()
// copy2()
// copy3()
// copy4()
// copy5()
// copy6()
// copy7()
// copy8()
copy9()
}
golang标准库io包
最新推荐文章于 2023-11-11 23:30:52 发布