在 Go 中,字符串是不可变的 UTF-8 编码字节序列。有时我们需要将字符串转换为字节数组,这可以通过使用 `[]byte()` 转换或 `bytes.Buffer` 来实现。

从 Go 字符串到字节数组从 Go 字符串到字节数组


[]byte() 转换

`[]byte()` 转换会创建一个新的字节数组,其中包含字符串的 UTF-8 编码字节。例如:

```go s := "Hello, world!" b := []byte(s) ```

在这里,`b` 将包含以下字节:

``` [72 101 108 108 111 44 32 119 111 114 108 100 33] ```

bytes.Buffer

`bytes.Buffer` 是一个可变的字节缓冲区,它可以用来逐步构建字节数组。例如:

```go import "bytes"

s := "Hello, world!" b := bytes.NewBufferString(s)

// 添加更多字节 b.WriteString("!")

// 获取字节数组 ba := b.Bytes() ```

`ba` 将包含以下字节:

``` [72 101 108 108 111 44 32 119 111 114 108 100 33 33] ```

需要注意的几点

`[]byte()` 转换将创建字符串的副本,而 `bytes.Buffer` 则不会。 `bytes.Buffer` 比 `[]byte()` 转换更适合用于构建大型字节数组。 如果需要一个不可变的字节数组,请使用 `[]byte()` 转换。

总结