0xBADC0FFEE / mail-test

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Процессу на stdin приходят строки, содержащие URL или названия файлов. Что именно приходит на stdin определяется с помощью параметра командной строки -type. Например, -type file или -type url.

Каждый такой URL нужно запросить, каждый файл нужно прочитать, и посчитать кол-во вхождений строки "Go" в ответе. В конце работы приложение выводит на экран общее кол-во найденных строк "Go" во всех источниках данных, например:

$ echo -e 'https://golang.org\nhttps://golang.org\nhttps://golang.org' | go run 1.go -type url
Count for https://golang.org: 9
Count for https://golang.org: 9
Count for https://golang.org: 9
Total: 27
$ echo -e '/etc/passwd\n/etc/hosts' | go run 1.go - type file
Count for /etc/passwd: 0
Count for /etc/hosts: 0
Total: 0

Каждый источник данных должен начать обрабатываться сразу после вычитывания и параллельно с вычитыванием следующего. Источники должны обрабатываться параллельно, но не более k=5 одновременно. Обработчики данных не должны порождать лишних горутин, т.е. если k=1000 а обрабатываемых источников нет, не должно создаваться 1000 горутин.

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

About


Languages

Language:Go 100.0%