Должно быть немного иначе, первое что нужно изменить - это объявление самой структуры, оно должно быть таким
type Event struct {
EventID int `json:"eventId"`
Type string `json:"type"`
....
}
Судя по комментарию "//Делаем longpoll запрос на обновления" - логика должна быть немного иной, вы должны сделать один запрос и потом постоянно декодировать (по одному) пришедшие порции данных.
Если я понял верно - тогда делать нужно вот так
// канал создаёте вот так, т.к. вы хотите по одному событию передавать данные, а не целыми слайсами сразу
EventsCh = make(chan Event, 100)
go mailing(EventsCh)
// делаете HTTP запрос
response, responseErr := http.PostForm(...)
// создаёте decoder
decoder := json.NewDecoder(response.Body)
for {
event := Event{}
decoderErr := decoder.Decode(&event) // если данных нет - тут выполнение программы блокируется
if decodeErr != nil { // тут может быть ошибка io.EOF (просто данные закончились, сервер корректно закрыл соединение)
break
}
EventsCh <- event // отправляете данные в канал, из которого их читает горутина
}
Функция mailing должна быть такой
func mailing(eventsCh chan Event){ //Получает события из канала
for{
event, ok := <- eventsChan
if !ok {
// канал закрыт
break
}
log.Print("Получено ", event)
}
}