/golang-course-week3

Solutions to week 3 tasks of the Inn4Science Golang course

Primary LanguageGo

Неделя 3

Дедлайн - четверг. Следующее задание будет завязано на данные два

Задания

К выполнению 2 задания

  1. Пин-понг
  2. Города

1. Пин-понг

Две горутины дожны отправлять друг другу с определенным интервалом 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. Города

Необходимо реализовать программу в которой при запуске стартуют от 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