什么时候在 Go 中使用 []byte 或 string?
技术问答
197 人阅读
|
0 人回复
|
2023-09-12
|
在编写 Go 在应用程序时,我经常发现我可以选择使用[]byte或string。除了明显的可变性[]byte,我怎么决定用哪个?# ^5 M5 P5 @: U- w3 I! S+ ~5 S
以几个例子为例:
% i F& f$ V6 t) w4 o[ol]函数返回新[]byte. 既然切片容量是固定的,为什么不返回字符串呢?
7 H6 a! Z- L4 L0 N[]byte没有string默认打印得很好,所以我经常发现自己string强制转换以记录目的。它应该永远是一个string?5 l) \ ^, l# P
在 prepending 时[]byte,总是创建一个新的底层数组。如果要添加的数据是常量,为什么不应该是 a string?[/ol]
3 p E+ S2 K2 p9 U 解决方案:
1 E. x3 u: ?+ y0 M$ f 我的建议是在处理文本时默认使用字符串。但是,如果适用以下条件之一,请改用 []byte:5 l R2 m4 b1 q$ X* l; \. m4 t/ @
[]byte 的可变性将显著减少所需的分配数量。
6 C0 ^7 k' c) p+ E8 Y# J您正在处理使用 []byte 的 API,避免将您的代码转换为字符串。 |
|
|
|
|
|