Дедлайн - четверг. Следующее задание будет завязано на данные два
К выполнению 2 задания
- Пин-понг
- Города
Две горутины дожны отправлять друг другу с определенным интервалом PING
, а в ответ получать PONG
.
- https://github.com/sirupsen/logrus - пакет с помощью которого происходит логгирование. Строка лога должна быть такой структуры.
uid
- номер горутины
// пример логгирования
logrus.WithFields(logrus.Fields{
"uid": 2,
"got": "PING",
"sent": "PONG",
}).Info("New Round")
// INFO[0000] New Round go=PING sent=PONG uid=2
// or
// time="2018-06-16T22:32:25+03:00" level=info msg="New Round" go=PING sent=PONG uid=2
Необходимо реализовать программу в которой при запуске стартуют от 2 до 13 (указывается при старте) горутин, которые между собой играют в города - у каждой должен быть идентификатор(имя, к примеру: Alice, Bob, Claire, Daniel), и порядковый номер. Если нет города на такую букву, берется предпоследняя, если снова нет, повтор, и так вплодь до -5 букв с конца. В остальном правила классические. Отвечают горутины-игроки последовательно и покругу. 1 -> 2-> ..-> N -> 1.
- В файле
cities.csv
находится база городов мира. - https://github.com/jszwec/csvutil - библиотека для работы с CSV
- https://github.com/sirupsen/logrus - пакет с помощью которого происходит логгирование. Строка лога должна быть такой структуры.
// пример логгирования
logrus.WithFields(logrus.Fields{
"id": 2,
"name": "Bob",
"question": "Kharkov",
"response": "Vienna",
}).Info("New Round")
## при выводе в терминал или в файл
INFO[0000] New Round id=2 name=Bob question=Kharkov response=Vienna
## при выводе в псевдо-терминалы или в файл
time="2018-06-16T22:23:33+03:00" level=info msg="New Round" id=2 name=Bob question=Kharkov response=Vienna