File tree Expand file tree Collapse file tree 3 files changed +61
-8
lines changed
Expand file tree Collapse file tree 3 files changed +61
-8
lines changed Original file line number Diff line number Diff line change 22
33このディレクトリには以下のサンプルがあります。
44
5- | file | example name | note |
6- | ---------- | ------------- | ---------------------------------------------- |
7- | flagset.go | flags_flagset | flag.Flagset のサンプルです |
8- | var.go | flags_var | flag.Var() のサンプルです |
9- | int.go | flags_int | flag.Int(), flag.IntVar() のサンプルです |
10- | bool.go | flags_bool | flag.Bool(), flag.BoolVar() のサンプルです |
11- | string.go | flags_string | flag.String(), flag.StringVar() のサンプルです |
12- | | | |
5+ | file | example name | note |
6+ | ----------- | -------------- | -------------------------------------------------- |
7+ | flagset.go | flags_flagset | flag.Flagset のサンプルです |
8+ | var.go | flags_var | flag.Var() のサンプルです |
9+ | int.go | flags_int | flag.Int(), flag.IntVar() のサンプルです |
10+ | bool.go | flags_bool | flag.Bool(), flag.BoolVar() のサンプルです |
11+ | string.go | flags_string | flag.String(), flag.StringVar() のサンプルです |
12+ | duration.go | flags_duration | flag.Duration(), flag.DurationVar() のサンプルです |
13+ | | | |
Original file line number Diff line number Diff line change 1+ package flags
2+
3+ import (
4+ "flag"
5+ "time"
6+
7+ "github.com/devlights/gomy/output"
8+ )
9+
10+ // Duration は、flag.Duration(), flag.DurationVar() のサンプルです。
11+ //
12+ // flagパッケージの関数は、flag.Duration()のように受け皿を戻り値で返してくれる関数と
13+ // flag.DurationVar() のように予め自前で用意している変数を利用する2パターンの使い方がある。
14+ //
15+ // # REFERENCES
16+ // - https://pkg.go.dev/flag@go1.22.4#Duration
17+ // - https://pkg.go.dev/flag@go1.22.4#DurationVar
18+ func Duration () error {
19+ var (
20+ fs = flag .NewFlagSet ("" , flag .ExitOnError )
21+
22+ d1 * time.Duration
23+ d2 time.Duration
24+ )
25+
26+ d1 = fs .Duration ("d1" , time .Duration (0 ), "duration value 1" )
27+ fs .DurationVar (& d2 , "d2" , 1 * time .Minute , "duration value 2" )
28+
29+ fs .Parse ([]string {"-d1" , "3s" , "-d2" , "1h2m3s" })
30+
31+ output .Stdoutl ("[d1]" , * d1 , (* d1 ).Milliseconds ())
32+ output .Stdoutl ("[d2]" , d2 , d2 .Seconds ())
33+
34+ return nil
35+
36+ /*
37+ $ task
38+ task: [build] go build .
39+ task: [run] ./try-golang -onetime
40+
41+ ENTER EXAMPLE NAME: flags_duration
42+
43+ [Name] "flags_duration"
44+ [d1] 3s 3000
45+ [d2] 1h2m3s 3723
46+
47+
48+ [Elapsed] 43.55µs
49+ */
50+
51+ }
Original file line number Diff line number Diff line change @@ -18,4 +18,5 @@ func (r *register) Regist(m mapping.ExampleMapping) {
1818 m ["flags_int" ] = Int
1919 m ["flags_bool" ] = Bool
2020 m ["flags_string" ] = String
21+ m ["flags_duration" ] = Duration
2122}
You can’t perform that action at this time.
0 commit comments