Как эффективно объединять строки в Go?
В Go строка является примитивным типом. Это означает, что она доступна только для чтения, и любая манипуляция с ней создаст новую строку.
Мне нужно много раз объединять строки, не зная длины результирующей строки, какой самый лучший способ сделать это?
Наивный способ был бы таким:
var s string
for i := 0; i < 1000; i++ {
s += getShortStringFromSomewhere()
}
Ответы (1 шт):
Автор решения: чистов_n
→ Ссылка
Можно сделать с помощью bytes.Buffer
.
Просто создать пустой буффер...
...и добавлять в него строки.
Вот код:
package main
import (
"bytes"
)
func main() {
buf := bytes.NewBufferString("") // (1)
for i := 0; i < 1000; i++ {
_, err := buf.WriteString(getShortStringFromSomewhere()) // (2)
if err != nil {
panic(err)
}
}
}