chumric, вам бы для начала основы языка изучить, иначе будет очень тяжело и наделаете страшных ошибок. После пхп довольно много отличий в языке встретите.
Эта функция возвращает тип *Tail, то есть, указатель на структуру Tail. Так как этот тип объявлен в пакете tail, то использовать надо так: t := map[int]*tail.Tail{}
Вы ведь функцию из пакета вызываете как tail.TailFile, вот и с типами так же.
Максим Тимофеев, автор вопроса не указал, что будет работать на одной машине. Я когда снимки с коптера обрабатываю для получения ортофотопланов, например, использую несколько машин. Фотограмметрия на одной машине быстро становится унылой при росте количества снимков.
Максим Тимофеев, у меня нет мака, я на Линуксе уже давно работаю. Сложность в том, что Винда платная, особенно это выстреливает в коммерческом использовании, а когда надо масштабировать задачи на много машин, становится вообще золотой.
Основное большинство опенсорс-софта собирается и под Вин и под Мак и под Линь, а в случае Paint 3d придётся приобретать или ставить себе Винду, если у пользователя другая система, явный минус.
Нет времени сейчас детально посмотреть весь код. Я бы в такой ситуации ещё добавил таймаут, чтобы не начать читать файл, пока его кто-то изменяет.
То есть, если прилетел ивент, ждём ещё, допустим, полсекунды и если более ивентов не было, то читаем.
его frame []byte это уже непосредственно декодированные данные цветов пикселей, полагаю, поэтому image.Decode() тут не подходит. Вам нужно создать image нужного типа (зависит от цветовой модели в пакете, который возвращает frame) и скопировать в него данные пикселей.
В приведённом вами коде функции main, программа должна выйти, не выполнив ничего, ибо функция main заканчивается, а вы никак не ждёте завершения всех задач.
Приведите полный код. Если там у вас в конце бесконечный цикл, то в нём и проблема скорее всего.
Ещё, у вас запихивание урлов в канал не в горутине идёт и заблокирует всё если урлов больше сотни будет:
Эта функция возвращает тип *Tail, то есть, указатель на структуру Tail. Так как этот тип объявлен в пакете tail, то использовать надо так:
t := map[int]*tail.Tail{}
Вы ведь функцию из пакета вызываете как tail.TailFile, вот и с типами так же.