Код не скомпилируется: ch имеет тип rune, а литерал в обратных кавычках — строковый. Для сравнения символа используйте ch == 'a'.
Почему rune нельзя сравнить с raw string в Go
Код не скомпилируется: 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.