Пишешь обычную go программу, которая крутится в бесконечном цикле и делает что надо (слушает порты/сигналы/файлы и так ты с ней общаешься). Потом с помощью программы nssm инсталируешь ее как сервис MyService: nssm install MyService d:\MyService.exe и управляешь из службы сервисов или тем же nssm. Как-то так.
Без сторонних программ. Есть пакет svc из дополнений. С помощью него можно создать программу которая интегрируется в службу сервисов и понимает все комманды от этой службы, причем ты сам определяешь поведение на переданные комманды (пауза, продолжение), чего в случае 1 ты сделать не можешь. Там даже есть пример такого простенького сервиса example. Можешь взять за основу его и изменить метод main под свои нужды.
Огромное спасибо за помощь. Просто мне очень сильно понадобилась собственно созданная служба виндовс для личных целей, а вот как это сделать, я так и не смог без вас понять. Ещё раз спасибо, буду сейчас пробовать.