Должен ли я ВСЕГДА использовать руну вместо строки, кроме как делать ввод / вывод - PullRequest
0 голосов
/ 07 октября 2019

В Python3 все строки имеют Unicode, поэтому вам нужно только декодировать или кодировать при выполнении операций ввода-вывода, а в основной части кода вы работаете только с Unicode.

Итак, яХотите знать, что в Go я должен сделать то же самое? Должен ли я преобразовать все строки в []rune на входе, и все мои функции будут получать только []rune тип?

Поскольку я новичок в Go, поэтому я не знаю, сколько сторонних библиотек поддерживаютРуна как строка. Если я полностью использую руну в своем коде, когда мне нужно будет взаимодействовать со сторонней библиотекой, будут ли проблемы с преобразованием руны в строку проблемой?

1 Ответ

4 голосов
/ 07 октября 2019

Должен ли я ВСЕГДА использовать руну вместо строки, кроме как делать ввод / вывод

Есть несколько очень полезных пакетов, которые работают со строками, с которыми вам будет неудобно работать, если ваши данныев массивах (или кусочках) рун.

Есть много случаев, когда мне нужно получить символ по индексу,

Это небезопаснов общем, частично из-за комбинации символов , а также из-за того, что строки (или текст Unicode в целом) могут содержать много других сложных ситуаций - возможно, сочетание текста слева направо и справа налево и т. д.

Нормализация текста к одной из нескольких нормальных форм может помочь справиться с большинством комбинируемых символов, но будут некоторые комбинации, которые не сводятся к одной руне.

Я пишу что-то вроде парсера для синтаксического анализа текста с помощью emoji

Юникод смайлики - это просто еще одна кодовая точка, поэтому ее можно рассматривать как обычный символacters.

Во многих случаях, вероятно, лучше всего использовать оператор range для обхода строки.

Если вы хотите, например, заменить все ? на :-), возможно, это можно сделать с помощью strings.Replace() или с помощью for ... range с strings.Builder.


Для меня наиболее убедительным аргументом является то, что, как только вы выходите за пределы ASCII, текст становится странным, Unicode становится почти непостижимо странным, а глубина его работы - это то, что лучше оставить экспертам, которые проводят свою жизнь, борясь с его безумием. Если вы хотите тратить свое время на функции для бизнеса, которые обычно более понятны для вас, вашего бизнеса и клиентов, используйте стандартные пакеты.


Полезные ссылки:

...