Если вы делаете на Go сетевое приложение, которое работает с базами данных и/или javascript — нужно быть аккуратным при использовании типа данных rune.
К примеру, в PostgreSQL нет типа данных, который соответствует rune; там такие варианты хранение rune:
- хранить в CHAR(1) — тогда нужно будет каждый раз конвертировать при выгрузке из БД вот так:
[]rune(symbolStr)[0]
- хранить в BYTEA; выгружать через ж….
make([]byte, 4)
- или же несколько менее очевидный вариант — хранить в БД в виде INT; что наиболее релевантно.
Плюс… Javascript тоже не умеет работать с рунами. Приходится приводить вывод вот так: String.fromCharCode(.Icon);
Кстати… Забавно, что далеко не все emoji (unicode символы вроде 🐻) можно хранить в rune. Потому что некоторые из них превышают размер rune, т.к. используют дополнительный (т.н. вариативный) селектор Unicode:
- «🏘️» дома (U+1F3D8 U+FE0F)
- «⛰️» гора (U+26F0 U+FE0F)
- «🏔️» гора со снегом (U+1F3D4 U+FE0F)
И это не только emoji, но и просто некоторые базовые символы Unicode.
Так что с rune надо быть аккуратным..