При отображении сообщения, для пользователя смысл может показаться более приятным, если послание написано менее машинным языком. Пакет text является дополнительным пакетом, в котором есть инструмент для форматирования правильной формы множественного числа для предложений на английском языке.
Как изменить число существительных в Go?
1. Выполните в терминале команду go get -x golang.org/x/text
для установки нового пакета, если у вас его еще нет;
2. Создайте файл plurals.go
со следующим содержимым;
Рекомендуем вам супер TELEGRAM канал по Golang где собраны все материалы для качественного изучения языка. Удивите всех своими знаниями на собеседовании! 😎
Мы публикуем в паблике ВК и Telegram качественные обучающие материалы для быстрого изучения Go. Подпишитесь на нас в ВК и в Telegram. Поддержите сообщество Go программистов.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
package main import ( "golang.org/x/text/feature/plural" "golang.org/x/text/language" "golang.org/x/text/message" ) func main() { message.Set(language.English, "%d items to do", plural.Selectf(1, "%d", "=0", "no items to do", plural.One, "one item to do", "<100", "%[1]d items to do", plural.Other, "lot of items to do", )) message.Set(language.English, "The average is %.2f", plural.Selectf(1, "%.2f", "<1", "The average is zero", "=1", "The average is one", plural.Other, "The average is %[1]f ", )) prt := message.NewPrinter(language.English) prt.Printf("%d items to do", 0) prt.Println() prt.Printf("%d items to do", 1) prt.Println() prt.Printf("%d items to do", 10) prt.Println() prt.Printf("%d items to do", 1000) prt.Println() prt.Printf("The average is %.2f", 0.8) prt.Println() prt.Printf("The average is %.2f", 1.0) prt.Println() prt.Printf("The average is %.2f", 10.0) prt.Println() } |
3. Выполните код через go run plurals.go
в терминале;
4. Посмотрите на вывод:
Изучаем функции из пакета text
В пакете text есть функция NewPrinter
, что принимает идентификацию языка и форматирует вывод наподобие того, как это делает пакет fmt
, только с возможностью обработать сообщения в зависимости от пола и множественного числа данных.
Функция Set
из пакета message
добавляет зависимость от пола и множественного числа. Выбор формы множественного числа обоснован правилами функции Selectf
. Функция Selectf
создает тип catalog.Message
на основе правил из plural.Form
или селектора.
В коде из примера используются формы plural.One
и plural.Other
, а также селекторы =x
, <x
. Они сопоставляются против специального символа %d
(другие специальные символы также можно использовать). Выбирается первый случай совпадения.
Для более подробной информации о селекторах и формах можете ознакомиться с документацией.
Администрирую данный сайт с целью распространения как можно большего объема обучающего материала для языка программирования Go. В IT с 2008 года, с тех пор изучаю и применяю интересующие меня технологии. Проявляю огромный интерес к машинному обучению и анализу данных.
E-mail: vasile.buldumac@ati.utm.md
Образование
Технический Университет Молдовы (utm.md), Факультет Вычислительной Техники, Информатики и Микроэлектроники
- 2014 — 2018 Universitatea Tehnică a Moldovei, ИТ-Инженер. Тема дипломной работы «Автоматизация покупки и продажи криптовалюты используя технический анализ»
- 2018 — 2020 Universitatea Tehnică a Moldovei, Магистр, Магистерская диссертация «Идентификация человека в киберпространстве по фотографии лица»