Вы не добавили сюда цикл. Соответственно, у вас код запускается один раз и выходит.
Зачем вам вообще здесь 3 раза таймер запускать? Почему просто не запустить таймер на нужное конечное время?
for i := 0; i <interval; i++{
timer := time.NewTimer(time.Second * 3)
select {
case <- reSend()
case <-timer.C:
if i != 3 {
i++
println(i)
reSend(url, data)
}
return errors.New("Заглушка")
}
}
nikita_chiru, если вы про функцию reSend, то у вас она запускается сразу при входе в select, ибо оттуда ожидается возврат канала, из которого ждать данные внутри select.
Потом зависит от того, откуда быстрее придут данные, из канала, который вернул reSend или из таймера.
1. Если из reSend, то запускается следующая итерация цикла, создается новый таймер и reSend запускается снова, потому что мы снова вошли в select.
2. Если же таймер сработал быстрее, по reSend запускается уже с параметрами url, data и функция завершается с ошибкой.