08.12 关于bytes包
byte包包含处理字节切片的函数,方法与帮助处理字符串的strings包方法相同。Go源代码文件的名称是bytes.go。它分为三部分。
这部分内容不包含在Go系统编程中,Packet出版,2017
byte.go第一部分代码如下:
1
package main
2
3
import (
4
"bytes"
5
"fmt"
6
"io"
7
"os"
8
)
Copied!
byte.go第二部分代码如下:
1
func main() {
2
var buffer bytes.Buffer
3
buffer.Write([]byte("This is"))
4
fmt.Fprintf(&buffer, " a string!\n")
5
buffer.WriteTo(os.Stdout)
6
buffer.WriteTo(os.Stdout)
Copied!
首先,创建一个新的bytes.Buffer变量,通过buffer.Write()fat.Fprintf()写入数据。然后调用buffer.WriteTo()两次。
第一次调用buffer.WriteTo()将打印buffer的内容。然而,第二次调用buffer.WriteTo()将不会有任何输出,因为在第一次调用后,buffer内容为空。
bytes.go最后一部分代码如下:
1
buffer.Reset()
2
buffer.Write([]byte("Mastering Go!"))
3
r := bytes.NewReader([]byte(buffer.String()))
4
fmt.Println(buffer.String())
5
for {
6
b := make([]byte, 3)
7
n, err := r.Read(b)
8
if err == io.EOF {
9
break
10
}
11
12
if err != nil {
13
fmt.Println(err)
14
continue
15
}
16
17
fmt.Printf("Read %s Bytes: %d\n", b, n)
18
}
19
}
Copied!
Reset()方法重置buffer变量,通过Write()方法再次写入一些数据。然后你可以通过bytes.NewReader()创建新的读对象,再使用io.Reader接口方法Read()buffer变量读取数据。
执行bytes.go会产生如下的输出:
1
$ go run byte.go
2
This is a string!
3
Mastering Go!
4
Read Mas Bytes: 3
5
Read ter Bytes: 3
6
Read ing Bytes: 3
7
Read Go Bytes: 3
8
Read ! Bytes: 1
Copied!
Last modified 2yr ago
Copy link