type ReadWriter struct {
    *Reader
    *Writer
}
func NewReadWriter(r *Reader, w *Writer) *ReadWriter
在函数 NewReadWriter() 中,参数 r 是要读取的来源 Reader 对象,参数 w 是要写入的目的 Writer 对象。
type Reader struct {
    //contains filtered or unexported fields
)
func NewReader(rd io.Reader) *Reader
其中,参数 rd 是 io.Reader 接口,Reader 对象将从该接口读取数据。func NewReaderSize(rd io.Reader, size int) *Reader
其中,参数 rd 是 io.Reader 接口,参数 size 是指定的缓冲区字节长度。func (b *Reader) Read(p []byte) (n int, err error)
在方法 Read() 中,参数 p 是用于存放读取数据的字节切片。示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    data := []byte("C语言中文网")
    rd := bytes.NewReader(data)
    r := bufio.NewReader(rd)
    var buf [128]byte
    n, err := r.Read(buf[:])
    fmt.Println(string(buf[:n]), n, err)
}
运行结果如下:C语言中文网 16 <nil>
func (b *Reader) ReadByte() (c byte,err error)
示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    data := []byte("Go语言入门教程")
    rd := bytes.NewReader(data)
    r := bufio.NewReader(rd)
    c, err := r.ReadByte()
    fmt.Println(string(c), err)
}
运行结果如下:G <nil>
func (b *Reader) ReadBytes(delim byte) (line []byte, err error)
其中,参数 delim 用于指定分割字节。示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    data := []byte("C语言中文网, Go语言入门教程")
    rd := bytes.NewReader(data)
    r := bufio.NewReader(rd)
    var delim byte = ','
    line, err := r.ReadBytes(delim)
    fmt.Println(string(line), err)
}
运行结果如下:C语言中文网, <nil>
func (b *Reader) ReadLine() (line []byte, isPrefix bool, err error)
示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    data := []byte("Golang is a beautiful language. \r\n I like it!")
    rd := bytes.NewReader(data)
    r := bufio.NewReader(rd)
    line, prefix, err := r.ReadLine()
    fmt.Println(string(line), prefix, err)
}
运行结果如下:Golang is a beautiful language. false <nil>
func (b *Reader) ReadRune() (r rune, size int, err error)
示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    data := []byte("C语言中文网")
    rd := bytes.NewReader(data)
    r := bufio.NewReader(rd)
    ch, size, err := r.ReadRune()
    fmt.Println(string(ch), size, err)
}
运行结果如下:C 1 <nil>
func (b *Reader) ReadSlice(delim byte) (line []byte, err error)
其中,参数 delim 用于指定分割字节。示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    data := []byte("C语言中文网, Go语言入门教程")
    rd := bytes.NewReader(data)
    r := bufio.NewReader(rd)
    var delim byte = ','
    line, err := r.ReadSlice(delim)
    fmt.Println(string(line), err)
    line, err = r.ReadSlice(delim)
    fmt.Println(string(line), err)
    line, err = r.ReadSlice(delim)
    fmt.Println(string(line), err)
}
运行结果如下:
C语言中文网, <nil>
Go语言入门教程 EOF
EOF
func (b *Reader) ReadString(delim byte) (line string, err error)
其中,参数 delim 用于指定分割字节。示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    data := []byte("C语言中文网, Go语言入门教程")
    rd := bytes.NewReader(data)
    r := bufio.NewReader(rd)
    var delim byte = ','
    line, err := r.ReadString(delim)
    fmt.Println(line, err)
}
运行结果为:C语言中文网, <nil>
func (b *Reader) UnreadByte() error
func (b *Reader) UnreadRune() error
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    data := []byte("Go语言入门教程")
    rd := bytes.NewReader(data)
    r := bufio.NewReader(rd)
    var buf [14]byte
    n, err := r.Read(buf[:])
    fmt.Println(string(buf[:n]), n, err)
    rn := r.Buffered()
    fmt.Println(rn)
    n, err = r.Read(buf[:])
    fmt.Println(string(buf[:n]), n, err)
    rn = r.Buffered()
    fmt.Println(rn)
}
运行结果如下:
Go语言入门 14 <nil>
6
教程 6 <nil>
0
func (b *Reader) Peek(n int) ([]byte, error)
在方法 Peek() 中,参数 n 是希望读取的字节数。示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    data := []byte("Go语言入门教程")
    rd := bytes.NewReader(data)
    r := bufio.NewReader(rd)
    bl, err := r.Peek(8)
    fmt.Println(string(bl), err)
    bl, err = r.Peek(14)
    fmt.Println(string(bl), err)
    bl, err = r.Peek(20)
    fmt.Println(string(bl), err)
}
运行结果如下:
Go语言 <nil>
Go语言入门 <nil>
Go语言入门教程 <nil>
type Writer struct {
    //contains filtered or unexported fields
}
func NewWriter(wr io.Writer) *Writer
其中,参数 wr 是 io.Writer 接口,Writer 对象会将数据写入该接口。func NewWriterSize(wr io.Writer, size int) *Writer
其中,参数 wr 是 io.Writer 接口,参数 size 是指定的缓冲区字节长度。func (b *Writer) Available() int
示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    wr := bytes.NewBuffer(nil)
    w := bufio.NewWriter(wr)
    p := []byte("C语言中文网")
    fmt.Println("写入前未使用的缓冲区为:", w.Available())
    w.Write(p)
    fmt.Printf("写入%q后,未使用的缓冲区为:%d\n", string(p), w.Available())
}
运行结果如下:
写入前未使用的缓冲区为: 4096
写入"C语言中文网"后,未使用的缓冲区为:4080
func (b *Writer) Buffered() int
示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    wr := bytes.NewBuffer(nil)
    w := bufio.NewWriter(wr)
    p := []byte("C语言中文网")
    fmt.Println("写入前未使用的缓冲区为:", w.Buffered())
    w.Write(p)
    fmt.Printf("写入%q后,未使用的缓冲区为:%d\n", string(p), w.Buffered())
    w.Flush()
    fmt.Println("执行 Flush 方法后,写入的字节数为:", w.Buffered())
}
该例测试结果为:
写入前未使用的缓冲区为: 0
写入"C语言中文网"后,未使用的缓冲区为:16
执行 Flush 方法后,写入的字节数为: 0
func (b *Writer) Flush() error
示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    wr := bytes.NewBuffer(nil)
    w := bufio.NewWriter(wr)
    p := []byte("C语言中文网")
    w.Write(p)
    fmt.Printf("未执行 Flush 缓冲区输出 %q\n", string(wr.Bytes()))
    w.Flush()
    fmt.Printf("执行 Flush 后缓冲区输出 %q\n", string(wr.Bytes()))
}
运行结果如下:
未执行 Flush 缓冲区输出 ""
执行 Flush 后缓冲区输出 "C语言中文网"
func (b *Writer) Write(p []byte) (nn int, err error)
其中,参数 p 是要写入的字节切片。示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    wr := bytes.NewBuffer(nil)
    w := bufio.NewWriter(wr)
    p := []byte("C语言中文网")
    n, err := w.Write(p)
    w.Flush()
    fmt.Println(string(wr.Bytes()), n, err)
}
运行结果如下:C语言中文网 16 <nil>
func (b *Writer) WriteByte(c byte) error
其中,参数 c 是要写入的字节数据,比如 ASCII 字符。示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    wr := bytes.NewBuffer(nil)
    w := bufio.NewWriter(wr)
    var c byte = 'G'
    err := w.WriteByte(c)
    w.Flush()
    fmt.Println(string(wr.Bytes()), err)
}
运行结果如下:G <nil>
func (b *Writer) WriteRune(r rune) (size int,err error)
其中,参数 r 是要写入的 Unicode 字符。示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    wr := bytes.NewBuffer(nil)
    w := bufio.NewWriter(wr)
    var r rune = 'G'
    size, err := w.WriteRune(r)
    w.Flush()
    fmt.Println(string(wr.Bytes()), size, err)
}
该例测试结果为:G 1 <nil>
func (b *Writer) WriteString(s string) (int, error)
其中,参数 s 是要写入的字符串。示例代码如下:
package main
import (
    "bufio"
    "bytes"
    "fmt"
)
func main() {
    wr := bytes.NewBuffer(nil)
    w := bufio.NewWriter(wr)
    s := "C语言中文网"
    n, err := w.WriteString(s)
    w.Flush()
    fmt.Println(string(wr.Bytes()), n, err)
}
运行结果如下:C语言中文网 16 <nil>
 版权说明:
	  版权说明:Copyright © 广州松河信息科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州松河信息科技有限公司 版权所有 18520775521
18520775521



 QQ洽谈
QQ洽谈
 sales@itwy.com
sales@itwy.com
