mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-19 03:50:11 +08:00
20 lines
849 B
Markdown
20 lines
849 B
Markdown
# 16.2 误用字符串
|
||
|
||
当需要对一个字符串进行频繁的操作时,谨记在go语言中字符串是不可变的(类似java和c#)。使用诸如`a += b`形式连接字符串效率低下,尤其在一个循环内部使用这种形式。这会导致大量的内存开销和拷贝。**应该使用一个字符数组代替字符串,将字符串内容写入一个缓存中。**例如以下的代码示例:
|
||
|
||
```go
|
||
var b bytes.Buffer
|
||
...
|
||
for condition {
|
||
b.WriteString(str) // 将字符串str写入缓存buffer
|
||
}
|
||
return b.String()
|
||
```
|
||
|
||
注意:由于编译优化和依赖于使用缓存操作的字符串大小,当循环次数大于15时,效率才会更佳。
|
||
|
||
## 链接
|
||
|
||
- [目录](directory.md)
|
||
- 上一节:[误用短声明导致变量覆盖](16.1.md)
|
||
- 下一节:[发生错误时使用defer关闭一个文件](16.3.md) |