goで定期的に関数を実行する

公開日:2019 M02 7最終更新日: 2019 M11 16

cronのように登録した時間や定期的に動作させたい。

Code

1時間に1回、"ticker"が出力。Enterを入力すると終了。

package main

import (
	"fmt"
	"os"
	"time"
)

func main() {
	abort := make(chan struct{})
	go func() {
		os.Stdin.Read(make([]byte, 1))
		abort <- struct{}{}
	}()
	ticker := time.NewTicker(1 * time.Hour)
	for {
		select {
		case <-ticker.C:
			fmt.Println("ticker")

		case <-abort:
			fmt.Println("Launch aborted!")
			return
		}
	}
}

参考

プログラム言語Go: 本

time.Ticker で遊ぶ

難しい

ゴルーチンとチャンネルはきちんと使えるようになればかなり面白そうですが、全然理解が追いついていないのが現状。書いてるうちに理解できることを期待しつつ、ふわふわした感じでまずは使っていこうと思います。

これを使って以前に作ったAPIのチェックを定期的に走らせつつ、エラーがあったらSlackに通知して、dbにログを保存してそれをフロントで表示する!という漠然とした目標にむかって進みます。


hidekazoo
作者: hidekazooTwitter
JavaScriptやPHPなどプログラム関係やDockerといった開発環境など、ITエンジニアとして興味あることを紹介しているサイトです