Skip to content

Commit 09cd0d5

Browse files
authored
Merge pull request #823 from devlights/add-flags-example
2 parents 822ee14 + c508c04 commit 09cd0d5

File tree

5 files changed

+77
-0
lines changed

5 files changed

+77
-0
lines changed

examples/basic/examples.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"github.com/devlights/try-golang/examples/basic/errs"
2323
"github.com/devlights/try-golang/examples/basic/fileio"
2424
"github.com/devlights/try-golang/examples/basic/filepaths"
25+
"github.com/devlights/try-golang/examples/basic/flags"
2526
"github.com/devlights/try-golang/examples/basic/floatop"
2627
"github.com/devlights/try-golang/examples/basic/formatting"
2728
"github.com/devlights/try-golang/examples/basic/functions"
@@ -110,6 +111,7 @@ func (r *register) Regist(m mapping.ExampleMapping) {
110111
errs.NewRegister().Regist(m)
111112
fileio.NewRegister().Regist(m)
112113
filepaths.NewRegister().Regist(m)
114+
flags.NewRegister().Regist(m)
113115
floatop.NewRegister().Regist(m)
114116
formatting.NewRegister().Regist(m)
115117
functions.NewRegister().Regist(m)

examples/basic/flags/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# サンプルリスト
2+
3+
このディレクトリには以下のサンプルがあります。
4+
5+
| file | example name | note |
6+
| ---------- | ------------- | ---------------------------- |
7+
| flagset.go | flags_flagset | flag.Flagset のサンプルです. |
8+
| | | |

examples/basic/flags/doc.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
/*
2+
Package flags -- flag パッケージに関するサンプルが配置されているパッケージです。
3+
*/
4+
package flags

examples/basic/flags/examples.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package flags
2+
3+
import "github.com/devlights/try-golang/mapping"
4+
5+
type (
6+
register struct{}
7+
)
8+
9+
// NewRegister -- このパッケージ用のサンプルを登録する mapping.Register を生成します。
10+
func NewRegister() mapping.Register {
11+
return &register{}
12+
}
13+
14+
// Regist -- 登録します.
15+
func (r *register) Regist(m mapping.ExampleMapping) {
16+
m["flags_flagset"] = Flagset
17+
}

examples/basic/flags/flagset.go

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package flags
2+
3+
import (
4+
"flag"
5+
6+
"github.com/devlights/gomy/output"
7+
)
8+
9+
// Flagset は、flag.Flagsetのサンプルです。
10+
//
11+
// 通常、flagパッケージはアプリケーションの引数を扱うものであるが
12+
// flag.Flagsetを利用することで、外から引数を指定してパースすることが可能となる。
13+
// ユニットテストと相性が良い。
14+
//
15+
// # REFERENCES
16+
// - https://pkg.go.dev/flag@go1.22.4#FlagSet
17+
func Flagset() error {
18+
var (
19+
fs = flag.NewFlagSet("", flag.ExitOnError)
20+
intValue = fs.Int("intvalue", 0, "int value")
21+
strValue = fs.String("strvalue", "", "string value")
22+
)
23+
24+
// Flagsetは自分でParse()を呼ぶ必要がある
25+
// アプリケーション引数を渡す場合は os.Args[1:] となる
26+
fs.Parse([]string{"-intvalue", "100", "-stvalue", "hello world"})
27+
28+
output.Stdoutl("[intValue]", *intValue)
29+
output.Stdoutl("[intValue]", *strValue)
30+
31+
return nil
32+
33+
/*
34+
$ task
35+
task: [build] go build .
36+
task: [run] ./try-golang -onetime
37+
38+
ENTER EXAMPLE NAME: flags_flagset
39+
40+
[Name] "flags_flagset"
41+
[intValue] 100
42+
[intValue] hello world
43+
44+
[Elapsed] 43.41µs
45+
*/
46+
}

0 commit comments

Comments
 (0)