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