Я хотел бы динамически изменять интервал тикера.
Я записал пример, чтобы показать вам, как я это сделал. Мой вариант использования отличается от «акселерометра», но я надеюсь, что он даст вам представление.
http://play.golang.org/p/6ANFnoE6pA
package main
import (
"time"
"log"
"fmt"
)
func main() {
interval := float64(1000)
ticker := time.NewTicker(time.Duration(interval) * time.Millisecond)
go func(){
counter := 1.0
for range ticker.C {
log.Println("ticker accelerating to " + fmt.Sprint(interval/counter) + " ms")
ticker = time.NewTicker(time.Duration(interval/counter) * time.Millisecond)
counter++
}
log.Println("stopped")
}()
time.Sleep(5 * time.Second)
log.Println("stopping ticker")
ticker.Stop()
}
Что не так, так это то, что тикер всегда будет "тикать" каждую секунду и не ускоряться... Есть идеи?
range
кэширует переменную для зацикливания, тогда я думаю, что переопределение тикера, как я предложил (с использованиемrange
), невозможно - play.golang.org/p/yZvrgURz4o - person damoiser   schedule 18.04.2016