Skip to content

Add examples/basic/flags/double_dashes_permitted.go #938

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Aug 14, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 14 additions & 13 deletions examples/basic/flags/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,17 @@

このディレクトリには以下のサンプルがあります。

| file | example name | note |
| ------------- | ---------------- | ----------------------------------------------------------------- |
| flagset.go | flags_flagset | flag.Flagset のサンプルです |
| var.go | flags_var | flag.Var() のサンプルです |
| var2.go | flags_var2 | flag.Var() のサンプルです。(2) 同じオプションを複数回指定。 |
| int.go | flags_int | flag.Int(), flag.IntVar() のサンプルです |
| bool.go | flags_bool | flag.Bool(), flag.BoolVar() のサンプルです |
| string.go | flags_string | flag.String(), flag.StringVar() のサンプルです |
| duration.go | flags_duration | flag.Duration(), flag.DurationVar() のサンプルです |
| func.go | flags_func | flag.Func() のサンプルです |
| textvar.go | flags_textvar | flag.TextVar() のサンプルです |
| nargs.go | flags_nargs | flag.Arg(), flag.Args(), flag.NArg(), flag.NFlag() のサンプルです |
| subcommand.go | flags_subcommand | flagパッケージを使ってサブコマンドを実現するサンプルです |
| file | example name | note |
| -------------------------- | ------------------- | ------------------------------------------------------------------------------------ |
| flagset.go | flags_flagset | flag.Flagset のサンプルです |
| var.go | flags_var | flag.Var() のサンプルです |
| var2.go | flags_var2 | flag.Var() のサンプルです。(2) 同じオプションを複数回指定。 |
| int.go | flags_int | flag.Int(), flag.IntVar() のサンプルです |
| bool.go | flags_bool | flag.Bool(), flag.BoolVar() のサンプルです |
| string.go | flags_string | flag.String(), flag.StringVar() のサンプルです |
| duration.go | flags_duration | flag.Duration(), flag.DurationVar() のサンプルです |
| func.go | flags_func | flag.Func() のサンプルです |
| textvar.go | flags_textvar | flag.TextVar() のサンプルです |
| nargs.go | flags_nargs | flag.Arg(), flag.Args(), flag.NArg(), flag.NFlag() のサンプルです |
| subcommand.go | flags_subcommand | flagパッケージを使ってサブコマンドを実現するサンプルです |
| double_dashes_permitted.go | flags_double_dashes | flagパッケージにてデフォルトで "--flag" の指定が許容されていることを示すサンプルです |
59 changes: 59 additions & 0 deletions examples/basic/flags/double_dashes_permitted.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package flags

import (
"flag"

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

// DoubleDashesPermitted は、flagパッケージにてデフォルトで "--flag" の指定が許容されていることを示すサンプルです。
//
// flagパッケージのドキュメントにて以下の形が許容されると記載があります。
//
// -flag
// --flag
// -flag=x
// -flag x
//
// # REFERENCES
// - https://pkg.go.dev/flag@go1.25.0#hdr-Command_line_flag_syntax
func DoubleDashesPermitted() error {
var (
fs = flag.NewFlagSet("double-dashes", flag.ExitOnError)
f1 = fs.Int("flag1", 0, "")
f2 = fs.Int("flag2", 0, "")
f3 = fs.Bool("flag3", false, "")
f4 = fs.Bool("flag4", true, "")

argv = []string{"-flag1", "10", "--flag2=20", "--flag3", "-flag4=false"}

err error
)
if err = fs.Parse(argv); err != nil {
return err
}

output.Stdoutl("[flag1]", *f1)
output.Stdoutl("[flag2]", *f2)
output.Stdoutl("[flag3]", *f3)
output.Stdoutl("[flag4]", *f4)

return nil

/*
$ task

task: [build] go build -o "/workspace/try-golang/try-golang" .
task: [run] ./try-golang -onetime

ENTER EXAMPLE NAME: flags_double_dashes

[Name] "flags_double_dashes"
[flag1] 10
[flag2] 20
[flag3] true
[flag4] false

[Elapsed] 70.25µs
*/
}
1 change: 1 addition & 0 deletions examples/basic/flags/examples.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,5 @@ func (r *register) Regist(m mapping.ExampleMapping) {
m["flags_textvar"] = TextVar
m["flags_nargs"] = Nargs
m["flags_subcommand"] = Subcommand
m["flags_double_dashes"] = DoubleDashesPermitted
}
18 changes: 10 additions & 8 deletions go.mod
Original file line number Diff line number Diff line change
@@ -1,18 +1,20 @@
module github.com/devlights/try-golang

go 1.24
go 1.24.0

toolchain go1.24.4

require (
github.com/devlights/gomy v0.6.0
github.com/devlights/gomy v0.7.0
github.com/integrii/flaggy v1.5.2
github.com/pelletier/go-toml/v2 v2.2.4
github.com/shopspring/decimal v1.4.0
golang.org/x/crypto v0.40.0
golang.org/x/exp v0.0.0-20250718183923-645b1fa84792
golang.org/x/crypto v0.41.0
golang.org/x/exp v0.0.0-20250813145105-42675adae3e6
golang.org/x/sync v0.16.0
golang.org/x/sys v0.34.0
golang.org/x/term v0.33.0
golang.org/x/text v0.27.0
golang.org/x/sys v0.35.0
golang.org/x/term v0.34.0
golang.org/x/text v0.28.0
gopkg.in/ini.v1 v1.67.0
gopkg.in/natefinch/lumberjack.v2 v2.2.1
gopkg.in/yaml.v3 v3.0.1
Expand All @@ -23,7 +25,7 @@ require github.com/muesli/cancelreader v0.2.2
require (
github.com/devlights/fdpassing v1.0.1
github.com/prometheus/procfs v0.17.0
github.com/shirou/gopsutil/v4 v4.25.6
github.com/shirou/gopsutil/v4 v4.25.7
)

require (
Expand Down
28 changes: 14 additions & 14 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/devlights/fdpassing v1.0.1 h1:O9JBm3wpay8NIbjteVV7elZwtqi6ie+X1PbH1WR3y8Y=
github.com/devlights/fdpassing v1.0.1/go.mod h1:eNoNi77gbfz/CsUtmnH3kZ64HVcK3ttFsKYxJopSPZ4=
github.com/devlights/gomy v0.6.0 h1:7BT8bSxr+ZeNkgEYNufuM2rSc6kIoN6g2FSZvrcT9zw=
github.com/devlights/gomy v0.6.0/go.mod h1:d28qyQ+/s7JravMlss2kIFxWxhY2KLlpe7rIBZ5YKeA=
github.com/devlights/gomy v0.7.0 h1:HT1dv5Z176UOg3IpiWfSo16K4NtYIhviV7532maz72o=
github.com/devlights/gomy v0.7.0/go.mod h1:Wxcshi/eMUQPyqiFMWokpqX5ITTieRyd8h3PbBDcJBc=
github.com/ebitengine/purego v0.8.4 h1:CF7LEKg5FFOsASUj0+QwaXf8Ht6TlFxg09+S9wz0omw=
github.com/ebitengine/purego v0.8.4/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0=
Expand All @@ -28,8 +28,8 @@ github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt
github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE=
github.com/prometheus/procfs v0.17.0 h1:FuLQ+05u4ZI+SS/w9+BWEM2TXiHKsUQ9TADiRH7DuK0=
github.com/prometheus/procfs v0.17.0/go.mod h1:oPQLaDAMRbA+u8H5Pbfq+dl3VDAvHxMUOVhe0wYB2zw=
github.com/shirou/gopsutil/v4 v4.25.6 h1:kLysI2JsKorfaFPcYmcJqbzROzsBWEOAtw6A7dIfqXs=
github.com/shirou/gopsutil/v4 v4.25.6/go.mod h1:PfybzyydfZcN+JMMjkF6Zb8Mq1A/VcogFFg7hj50W9c=
github.com/shirou/gopsutil/v4 v4.25.7 h1:bNb2JuqKuAu3tRlPv5piSmBZyMfecwQ+t/ILq+1JqVM=
github.com/shirou/gopsutil/v4 v4.25.7/go.mod h1:XV/egmwJtd3ZQjBpJVY5kndsiOO4IRqy9TQnmm6VP7U=
github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k=
github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME=
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
Expand All @@ -40,21 +40,21 @@ github.com/tklauser/numcpus v0.10.0 h1:18njr6LDBk1zuna922MgdjQuJFjrdppsZG60sHGfj
github.com/tklauser/numcpus v0.10.0/go.mod h1:BiTKazU708GQTYF4mB+cmlpT2Is1gLk7XVuEeem8LsQ=
github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0=
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
golang.org/x/exp v0.0.0-20250718183923-645b1fa84792 h1:R9PFI6EUdfVKgwKjZef7QIwGcBKu86OEFpJ9nUEP2l4=
golang.org/x/exp v0.0.0-20250718183923-645b1fa84792/go.mod h1:A+z0yzpGtvnG90cToK5n2tu8UJVP2XUATh+r+sfOOOc=
golang.org/x/crypto v0.41.0 h1:WKYxWedPGCTVVl5+WHSSrOBT0O8lx32+zxmHxijgXp4=
golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc=
golang.org/x/exp v0.0.0-20250813145105-42675adae3e6 h1:SbTAbRFnd5kjQXbczszQ0hdk3ctwYf3qBNH9jIsGclE=
golang.org/x/exp v0.0.0-20250813145105-42675adae3e6/go.mod h1:4QTo5u+SEIbbKW1RacMZq1YEfOBqeXa19JeshGi+zc4=
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20201204225414-ed752295db88/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg=
golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0=
golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
golang.org/x/sys v0.35.0 h1:vz1N37gP5bs89s7He8XuIYXpyY0+QlsKmzipCbUtyxI=
golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/term v0.34.0 h1:O/2T7POpk0ZZ7MAzMeWFSg6S5IpWd/RXDlM9hgM3DR4=
golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw=
golang.org/x/text v0.28.0 h1:rhazDwis8INMIwQ4tpjLDzUhx6RlXqZNPEM0huQojng=
golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU=
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
Expand Down
Loading