Ваша проблема здесь:
result := int64((now-1)/blockInterval) * blockInterval
time.Now().Unix()
возвращает текущее время Unix в секундах . Таким образом, для последовательных итераций time.Now().Unix()
будет:
1257894001
1257894002
1257894003
Но в своей функции вы вычитаете 1, а затем делите на десять, поэтому каждое из вышеперечисленных становится следующим, поскольку дробная часть отбрасывается.
125789400
125789400
125789400
Затем, когда вы умножите на blockInterval
(10), все они станут:
1257894000
1257894000
1257894000
Итак, result
заканчивается тем же. Если вы дадите ему работать дольше десяти секунд, вы увидите result
изменение через 10 секунд:
https://play.golang.org/p/LgPtHwjwlC1