返回介绍

08.12 关于bytes包

发布于 2024-08-14 12:50:32 字数 3481 浏览 0 评论 0 收藏 0

byte包包含处理字节切片的函数,方法与帮助处理字符串的strings包方法相同。Go源代码文件的名称是bytes.go。它分为三部分。

这部分内容不包含在Go系统编程中,Packet出版,2017

byte.go第一部分代码如下:

package main

import (
    "bytes"
    "fmt"
    "io"
    "os"
)

byte.go第二部分代码如下:

func main() {
    var buffer bytes.Buffer
    buffer.Write([]byte("This is"))
    fmt.Fprintf(&buffer, " a string!\n")
    buffer.WriteTo(os.Stdout)
    buffer.WriteTo(os.Stdout)

首先,创建一个新的bytes.Buffer变量,通过buffer.Write()fmt.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.go 
This is a string!
Mastering Go!
Read Mas Bytes: 3
Read ter Bytes: 3
Read ing Bytes: 3
Read  Go Bytes: 3
Read ! Bytes: 1

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文