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