2016年5月24日火曜日

golang 時間を引数としてプログラムに渡す

  • このエントリーをはてなブックマークに追加


golang 時間を引数としてプログラムに渡す golangプログラムで引数で指定された時間でSleepしたくて、いろいろはまってました。

Code

//整数を受け取って、Millisecondの倍数の時間でスリープ、既定は1000ミリ秒

multipleOfMS := flag.Int("m", 1000, "msの倍数")
flag.Parse()
time.Sleep(multipleOfMS * time.Millisecond)

Error

invalid operation: multipleOfMS * time.Millisecond (mismatched types *int and time.Duration)

Int型をtime.durationに変更

 multipleOfMS := flag.Int("m", 1000, "msの倍数")
flag.Parse()
time.Sleep(time.Duration(multipleOfMS) * time.Millisecond)

やはりエラー

cannot convert multipleOfMS (type *int) to type time.Duration
いろいろ調べてflag.Durationというのがあってこっちを使う
multipleOfMS := flag.Duration("m", 1 * time.Second, "-m=2sのように設定")
flag.Parse()
time.Sleep(*multipleOfMS)

実行

//5秒sleep
go run main.go -m=5s
//500ミリ秒sleep
go run main.go -m=500ms

この記事がお役にたちましたらシェアをお願いします:)

  • このエントリーをはてなブックマークに追加

0 件のコメント:

コメントを投稿