いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-456 (flagパッケージ再入門)(03-Duration)

関連記事

Goメモ-454 (flagパッケージ再入門)(01-FlagSet) - いろいろ備忘録日記

Goメモ-455 (flagパッケージ再入門)(02-Var) - いろいろ備忘録日記

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。忘れないうちにメモメモ。。。

最近、flaggy とかを利用していて、あまりflagパッケージを触らなくなってきているのですが

小さなツールをちゃちゃっとワンタイムで利用するときは、やっぱり使ったりします。

使っていないと忘れてしまいそうなので、ここに自分の備忘録として残しておこうと思います。

今回は、flag.Duration()について。

flagパッケージの関数は、flag.Duration()のように受け皿を戻り値で返してくれる関数とflag.DurationVar() のように予め自前で用意している変数を利用する2パターンの使い方がある。

time.Durationに指定するのと同じ値が使えるので便利ですね。(2sとか)

サンプル

package flags

import (
    "flag"
    "time"

    "github.com/devlights/gomy/output"
)

// Duration は、flag.Duration(), flag.DurationVar() のサンプルです。
//
// flagパッケージの関数は、flag.Duration()のように受け皿を戻り値で返してくれる関数と
// flag.DurationVar() のように予め自前で用意している変数を利用する2パターンの使い方がある。
//
// # REFERENCES
//   - https://pkg.go.dev/flag@go1.22.4#Duration
//   - https://pkg.go.dev/flag@go1.22.4#DurationVar
func Duration() error {
    var (
        fs = flag.NewFlagSet("", flag.ExitOnError)

        d1 *time.Duration
        d2 time.Duration
    )

    d1 = fs.Duration("d1", time.Duration(0), "duration value 1")
    fs.DurationVar(&d2, "d2", 1*time.Minute, "duration value 2")

    fs.Parse([]string{"-d1", "3s", "-d2", "1h2m3s"})

    output.Stdoutl("[d1]", *d1, (*d1).Milliseconds())
    output.Stdoutl("[d2]", d2, d2.Seconds())

    return nil

    /*
       $ task
       task: [build] go build .
       task: [run] ./try-golang -onetime

       ENTER EXAMPLE NAME: flags_duration

       [Name] "flags_duration"
       [d1]                 3s 3000
       [d2]                 1h2m3s 3723


       [Elapsed] 43.55µs
   */

}

参考情報

Goメモ-428 (flaggyメモ)(01) - いろいろ備忘録日記

Goメモ-429 (flaggyメモ)(02) - いろいろ備忘録日記

Goメモ-430 (flaggyメモ)(03) - いろいろ備忘録日記

Goのおすすめ書籍


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。