From 6206fc9c62747cf192f14e4a6d0cf186c2cb4fa4 Mon Sep 17 00:00:00 2001 From: dreddsa5dies Date: Wed, 9 Feb 2022 12:17:11 +0300 Subject: [PATCH] concatinate strings --- README.md | 2 +- docs/GOLANG.md | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ba566e5..e231484 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ - coming soon 6. [Вопросы по языку Golang](docs/GOLANG.md) - [Что из себя представляет тип данных string в языке Golang? Можно ли изменить определенный символ в строке? Что происходит при склеивании строк?](docs/GOLANG.md#1) - - Вытекающий вопрос — как эффективно склеивать множество строк? + - [Вытекающий вопрос — как эффективно склеивать множество строк?](docs/GOLANG.md#2) - Что будет происходить при конкурентной записи в map? Как можно решить эту проблему? - Расскажите о ООП в Golang. - В чем различия goroutine от потока системы? diff --git a/docs/GOLANG.md b/docs/GOLANG.md index ca8087b..7c0297f 100644 --- a/docs/GOLANG.md +++ b/docs/GOLANG.md @@ -2,7 +2,21 @@ ### 1. Что из себя представляет тип данных string в языке Golang? Можно ли изменить определенный символ в строке? Что происходит при склеивании строк? -Строка Go - это байтовый срез, предназначенный только для чтения, который может содержать байты любого типа и иметь произвольную длину. Строка неизменяемая и изменить определенный символ в конкретной строке нельзя. Создается новая строка (в простейшем случае). +Строка Go - это байтовый срез, предназначенный только для чтения, который может содержать байты любого типа и иметь произвольную длину. Строка неизменяемая и изменить определенный символ в конкретной строке нельзя. Создается новая строка (в простейшем случае). + +### 2. Вытекающий вопрос — как эффективно склеивать множество строк? + +Например, чтобы избавиться от лишних аллокаций, можно воспользоваться типом strings.Builder и методом WriteString: +```go + func join(strs ...string) string { + var sb strings.Builder + for _, str := range strs { + sb.WriteString(str) + } + return sb.String() + } + ``` + И никто не мешает пользоваться пакетом strings. ### 8. Как задать направление канала?