Skip to content

Commit 17b5347

Browse files
authored
Merge pull request #829 from devlights/add-flag-func-example
2 parents acc7a38 + b6e2c97 commit 17b5347

File tree

3 files changed

+54
-0
lines changed

3 files changed

+54
-0
lines changed

examples/basic/flags/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,5 @@
1010
| bool.go | flags_bool | flag.Bool(), flag.BoolVar() のサンプルです |
1111
| string.go | flags_string | flag.String(), flag.StringVar() のサンプルです |
1212
| duration.go | flags_duration | flag.Duration(), flag.DurationVar() のサンプルです |
13+
| func.go | flags_func | flag.Func() のサンプルです |
1314
| | | |

examples/basic/flags/examples.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,5 @@ func (r *register) Regist(m mapping.ExampleMapping) {
1919
m["flags_bool"] = Bool
2020
m["flags_string"] = String
2121
m["flags_duration"] = Duration
22+
m["flags_func"] = Func
2223
}

examples/basic/flags/func.go

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package flags
2+
3+
import (
4+
"flag"
5+
"strings"
6+
7+
"github.com/devlights/gomy/output"
8+
)
9+
10+
// Func は、flag.Func() のサンプルです.
11+
//
12+
// flag.Func() は、func(string) error の関数を設定することで
13+
// 任意の処理を行うことが出来る関数です。
14+
//
15+
// # REFERENCES
16+
// - https://pkg.go.dev/flag@go1.22.4#Func
17+
func Func() error {
18+
var (
19+
hs []string
20+
fs = flag.NewFlagSet("", flag.ExitOnError)
21+
)
22+
23+
fs.Func("hosts", "host names. comma separated.", func(v string) error {
24+
hs = strings.Split(v, ",")
25+
return nil
26+
})
27+
28+
fs.Parse([]string{"-hosts", "example.invalid,my.local,localhost"})
29+
30+
for _, h := range hs {
31+
output.Stdoutl("[h]", h)
32+
}
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_func
42+
43+
[Name] "flags_func"
44+
[h] example.invalid
45+
[h] my.local
46+
[h] localhost
47+
48+
49+
[Elapsed] 42.06µs
50+
*/
51+
52+
}

0 commit comments

Comments
 (0)