Sobes.tech
Назад к вопросам
Principal
13

Какие есть варианты подсчёта количества символов в строке на Go? (обсуждение после собеседования)

Компании, где спрашивали
ArendadataArendadata

Ответ от нейросети

sobes.tech AI

В Go подсчёт количества символов в строке зависит от того, что считать символом — байтом, руном (Unicode code point) или графемой (user-perceived character).

  1. Подсчёт байтов:
s := "Привет"
count := len(s) // количество байтов
  1. Подсчёт рун (Unicode code points):
import "unicode/utf8"

s := "Привет"
count := utf8.RuneCountInString(s) // количество рун
  1. Подсчёт графем (графемных кластеров):

Для точного подсчёта пользовательских символов (например, учитывая сложные эмодзи или комбинированные символы) нужно использовать сторонние библиотеки, например, github.com/rivo/uniseg:

import "github.com/rivo/uniseg"

s := "👩‍👩‍👧‍👦"
graphemes := uniseg.NewGraphemes(s)
count := 0
for graphemes.Next() {
    count++
}

Таким образом, выбор метода зависит от задачи: для простых случаев достаточно utf8.RuneCountInString, для точного подсчёта пользовательских символов — графемы.