string - 何时在 Go 中使用 []byte 或 string?

标签 string bytearray go

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

我有几个用例示例:

  1. 一个函数返回一个新的[]byte。既然 slice 容量是固定的,那有什么理由不返回字符串呢?
  2. 默认情况下,
  3. []byte 的打印效果不如 string,因此我经常发现自己转换为 string 以进行日志记录。它应该一直是 string 吗?
  4. 添加 []byte 时,始终会创建一个新的底层数组。如果要添加的数据是常量,为什么不应该是 string

最佳答案

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

  • []byte 的可变性将显着减少所需的分配数量。

  • 您正在处理使用 []byte 的 API,避免转换为字符串将简化您的代码。

关于string - 何时在 Go 中使用 []byte 或 string?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10826651/

相关文章:

string - 将 Arduino F() 宏与字符串数组一起使用

java - ByteArrayInputStream#read() 负输入字节的奇怪行为

vb.net - 而是以字节数组发送多个十六进制

go - 使用速记分配/声明将返回值分配给结构成员

go - 如何在for循环中的GoRoutine中使用 'break'或 'continue'?

c# - 需要一种更好的方法来删除字符串中的模式

c# - C#中String和string有什么区别?

actionscript-3 - 如何从 ActionScript 3 中的缓冲区 (ByteArray/Stream) 播放 MP3 声音?

string - 在 Go 中测试空字符串的最佳方法是什么?

java - java中如何比较两个字符串而不考虑空格和字符串的大小写?