Назад к вопросам
Arendadata
Principal
13
Какие есть варианты подсчёта количества символов в строке на Go? (обсуждение после собеседования)
Компании, где спрашивали
Ответ от нейросети
sobes.tech AI
В Go подсчёт количества символов в строке зависит от того, что считать символом — байтом, руном (Unicode code point) или графемой (user-perceived character).
- Подсчёт байтов:
s := "Привет"
count := len(s) // количество байтов
- Подсчёт рун (Unicode code points):
import "unicode/utf8"
s := "Привет"
count := utf8.RuneCountInString(s) // количество рун
- Подсчёт графем (графемных кластеров):
Для точного подсчёта пользовательских символов (например, учитывая сложные эмодзи или комбинированные символы) нужно использовать сторонние библиотеки, например, github.com/rivo/uniseg:
import "github.com/rivo/uniseg"
s := "👩👩👧👦"
graphemes := uniseg.NewGraphemes(s)
count := 0
for graphemes.Next() {
count++
}
Таким образом, выбор метода зависит от задачи: для простых случаев достаточно utf8.RuneCountInString, для точного подсчёта пользовательских символов — графемы.