9 подписчиков
Пока читал "Golang для профи" наткнулся на еще одну любопытную цитату:
Поскольку доступ к строкам возможен в виде массивов, вы можете перебирать
руны строки с помощью цикла for или указывать на определенный символ, если
знаете его положение в строке. Длина строки совпадает с количеством символов
в строке, что обычно неверно для байтовых срезов, поскольку для символов
Unicode обычно требуется несколько байтов. (С)
Я очень надеюсь, что мысль автора потерялась где-то при переводе (читаю третье издание), потому что давно и широко известно:
a := "Это строка"
fmt.Println(len(a), utf8.RuneCountInString(a)) // 19 10
И тем более, что чуть ранее автор пишет:
Для представления строк в Go поддерживается тип данных string. Строка Go — это просто набор байтов, и доступ можно получить как к строке, так и к массиву. В одном байте может храниться любой символ ASCII, однако для хранения одного символа Unicode обычно требуется несколько байтов. (С)
В целом, как можно заметить по цитатам, с переводом как будто что-то не так. Попробовать что ли найти оригинал?
Около минуты
25 февраля 2024