diff --git a/main.go b/main.go index cac47e9..a97161b 100644 --- a/main.go +++ b/main.go @@ -10,7 +10,8 @@ package main // import "git.sangeeth.dev/gobyexample/timeouts" // import "git.sangeeth.dev/gobyexample/selectdefault" // import "git.sangeeth.dev/gobyexample/closingchannels" -import "git.sangeeth.dev/gobyexample/timers" +// import "git.sangeeth.dev/gobyexample/timers" +import "git.sangeeth.dev/gobyexample/tickers" func main() { // runes.Runes() @@ -23,5 +24,6 @@ func main() { // timeouts.Timeouts() // selectdefault.SelectDefault() // closingchannels.ClosingChannels() - timers.Timers() + // timers.Timers() + tickers.Tickers() } diff --git a/tickers/tickers.go b/tickers/tickers.go new file mode 100644 index 0000000..9f21acb --- /dev/null +++ b/tickers/tickers.go @@ -0,0 +1,29 @@ +package tickers + +import ( + "fmt" + "time" +) + +func Tickers() { + t := time.NewTicker(500 * time.Millisecond) + done := make(chan bool) + + go func() { + for { + select { + case <-done: + return + case val := <-t.C: + fmt.Printf("tick at %v\n", val) + } + } + }() + + time.Sleep(2 * time.Second) + + fmt.Println("Stopping ticking") + t.Stop() + done <- true + fmt.Println("Program exiting") +}