Помимо встроенного оператора +, в Go есть много других способов для конкатенации строк. Далее будет дана простая инструкция для конкатенации, или слияния строк с помощью пакета bytes и встроенной функции copy.

Как конкатенировать строки в Golang?

1. Создайте файл concat_buffer.go со следующим содержимым:

Форум Гоферов

Мы работаем над форумом для программистов на Golang. Очень нужны модераторы которые хотят помочь с ответами для новичков и помочь в развитии Go-сообщества.

Go на Форум

Уроки, статьи и Видео

Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.

Go в ВК Go в Telegram

2. Запустите код через go run concat_buffer.go;
3. Посмотрите на вывод в терминале:

конкатенация строк golang

4. Создайте файл concat_copy.go со следующим содержимым:

5. Запустите код через go run concat_copy.go;
6. Посмотрите на результат в терминале:

конкатенация строк

Код слияния строк в Golang

В шагах 1-3 описывается использование Buffer из пакета bytes в качестве отличного (в плане производительности) решения конкатенации строк. Структура Buffer имплементирует метод WriteString, что может использоваться для эффективной конкатенации строк в базовый байтовый срез.

Нет нужды использовать данное решение во всех случаях. Просто помните о нем, когда программа должна конкатенировать крупное число строк. К примеру, экспорт содержимого большого CSV-файла и прочих.

Встроенная функция copy из шагов 4-6 может использоваться для конкатенации string. Данный метод требует некоторых предположений касательно длины финальной строки, он также может использоваться на ходу. Однако, если вместимость буфера места написания результата меньше уже написанной части и добавленной строки, буфер требуется расширить. Это обычно делается через выделение нового среза с большей вместимостью.

Сравнение способов конкатенации в Golang

Сравним несколько способов конкатенации строк в Golang. Это использование оператора +, bytes.Buffer и встроенной функции copy.

1. Создайте папку bench и файл bench_test.go внутри со следующем содержимым:

2. Посмотрите на результаты в терминале:

конкатенация golang

Понравилась статья?

Поддержи наш проект, чтобы мы могли создать больше хорошего контента!