一尘不染

什么时候在 Go 中使用 []byte 或 string?

go

在编写 Go 应用程序时,我经常发现自己可以选择使用[]bytestring。除了明显的可变性之外[]byte,我如何决定使用哪个?

我有几个用例作为例子:

  1. 一个函数返回一个新的[]byte. 既然切片容量是固定的,那还有什么理由不返回字符串呢?
  2. []byte没有string默认打印得那么好,所以我经常发现自己string为了记录目的而强制转换。它应该一直是一个string
  3. 在 prepending 时[]byte,总是会创建一个新的底层数组。如果要添加的数据是常量,为什么这不应该是 a string

阅读 232

收藏
2021-12-18

共1个答案

一尘不染

我的建议是在处理文本时默认使用字符串。但是,如果以下条件之一适用,请改用 []byte:

  • []byte 的可变性将显着减少所需的分配数量。
  • 您正在处理使用 []byte 的 API,避免转换为字符串将简化您的代码。
2021-12-18