Skip to content

Commit acc7a38

Browse files
authored
Merge pull request #828 from devlights/add-flag-duration-example
2 parents 8b9f74c + 66063e0 commit acc7a38

File tree

3 files changed

+61
-8
lines changed

3 files changed

+61
-8
lines changed

examples/basic/flags/README.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,12 @@
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+
| | | |

examples/basic/flags/duration.go

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
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+
}

examples/basic/flags/examples.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff 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
}

0 commit comments

Comments
 (0)