Почему rune нельзя сравнить с raw string в Go

Код не скомпилируется: ch имеет тип rune, а литерал в обратных кавычках — строковый. Для сравнения символа используйте ch == 'a'.

Короткий ответ

Что ответить на собеседовании

Код не скомпилируется: ch имеет тип rune, а литерал в обратных кавычках — строковый. Для сравнения символа используйте ch == 'a'.

Подробный разбор

Ответ с пояснениями

Условие

В Go выполняется цикл for _, ch := range "abc", внутри условие ch == a. Скомпилируется ли код и чем отличаются обратные и одинарные кавычки?

Ответ

Код не скомпилируется: ch имеет тип rune, а литерал в обратных кавычках — строковый. Для сравнения символа используйте ch == 'a'.

Одинарные кавычки задают rune literal, двойные — интерпретируемую строку, обратные — raw string. Range по строке выдаёт кодовые точки, а не однобайтовые строки. Если задача требует строковое сравнение, можно явно преобразовать rune через string(ch), но для одного символа это обычно лишнее.

Источник: go.dev.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее