Skip to content

Instantly share code, notes, and snippets.

@shogo82148
Last active May 15, 2021 14:14
Show Gist options
  • Save shogo82148/9c22369981779155b399 to your computer and use it in GitHub Desktop.
Save shogo82148/9c22369981779155b399 to your computer and use it in GitHub Desktop.
golang flag test
package main
import (
"flag"
"fmt"
)
func main() {
flag.Parse()
n := flag.NArg()
fmt.Printf("flag.NArgs() = %v\n", n)
for i := 0; i < n; i++ {
fmt.Printf("flag.Arg(%d) = %v\n", i, flag.Arg(i))
}
fmt.Printf("flag.Args() = %v\n", flag.Args())
}
package main
import (
"flag"
"fmt"
)
type MyValue int
func (i *MyValue) String() string {
return fmt.Sprintf("%d", *i)
}
func (i *MyValue) Set(s string) error {
fmt.Printf("Set: %v\n", s)
switch s {
case "one":
*i = 1
case "two":
*i = 2
case "three":
*i = 3
default:
*i = 0
}
return nil
}
func main() {
var myValue MyValue
flag.Var(&myValue, "value", "customized value")
flag.Parse()
fmt.Printf("myValue = %d\n", myValue)
}
package main
import (
"flag"
"fmt"
)
func main() {
flagSet := flag.NewFlagSet("HogeHoge", flag.ContinueOnError)
boolVar := flagSet.Bool("bool", false, "flag.BoolVar")
intVar := flagSet.Int("int", 0, "flag.IntVar")
int64Var := flagSet.Int64("int64", 0, "flag.Int64Var")
uintVar := flagSet.Uint("uint", 0, "flag.IntVar")
uint64Var := flagSet.Uint64("uint64", 0, "flag.Int64Var")
float64Var := flagSet.Float64("float64", 0, "flag.Float64Var")
stringVar := flagSet.String("string", "", "flag.StringVar")
durationVar := flagSet.Duration("duration", 0, "flag.DurationVar")
flagSet.Parse([]string{
"--bool",
"--int=12",
"--int64=123",
"--uint=1234",
"--uint64=12345",
"--float64=3.1415926535",
"--string", "some string",
"--duration", "12h30m",
})
fmt.Printf("flag.NFlag() = %d\n", flagSet.NFlag())
fmt.Printf("boolVar = %v\n", *boolVar)
fmt.Printf("intVar = %v\n", *intVar)
fmt.Printf("int64Var = %v\n", *int64Var)
fmt.Printf("uintVar = %v\n", *uintVar)
fmt.Printf("uint64Var = %v\n", *uint64Var)
fmt.Printf("float64Var = %v\n", *float64Var)
fmt.Printf("stringVar = %v\n", *stringVar)
fmt.Printf("durationVar = %v\n", *durationVar)
}
package main
import (
"flag"
"fmt"
)
func main() {
flag.Bool("bool", false, "flag.BoolVar")
flag.Int("int", 0, "flag.IntVar")
flag.Int64("int64", 0, "flag.Int64Var")
flag.Uint("uint", 0, "flag.IntVar")
flag.Uint64("uint64", 0, "flag.Int64Var")
flag.Float64("float64", 0, "flag.Float64Var")
flag.String("string", "", "flag.StringVar")
flag.Duration("duration", 0, "flag.DurationVar")
flag.Parse()
fmt.Println(flag.Lookup("bool"))
fmt.Println(flag.Lookup("int"))
fmt.Println(flag.Lookup("int64"))
fmt.Println(flag.Lookup("uint64"))
fmt.Println(flag.Lookup("float64"))
fmt.Println(flag.Lookup("string"))
fmt.Println(flag.Lookup("duration"))
}
package main
import (
"flag"
"fmt"
)
func main() {
boolVar := flag.Bool("bool", false, "flag.BoolVar")
intVar := flag.Int("int", 0, "flag.IntVar")
int64Var := flag.Int64("int64", 0, "flag.Int64Var")
uintVar := flag.Uint("uint", 0, "flag.IntVar")
uint64Var := flag.Uint64("uint64", 0, "flag.Int64Var")
float64Var := flag.Float64("float64", 0, "flag.Float64Var")
stringVar := flag.String("string", "", "flag.StringVar")
durationVar := flag.Duration("duration", 0, "flag.DurationVar") // time.ParseDuration で解析してくれる
flag.Parse()
fmt.Printf("flag.NFlag() = %d\n", flag.NFlag())
fmt.Printf("boolVar = %v\n", *boolVar)
fmt.Printf("intVar = %v\n", *intVar)
fmt.Printf("int64Var = %v\n", *int64Var)
fmt.Printf("uintVar = %v\n", *uintVar)
fmt.Printf("uint64Var = %v\n", *uint64Var)
fmt.Printf("float64Var = %v\n", *float64Var)
fmt.Printf("stringVar = %v\n", *stringVar)
fmt.Printf("durationVar = %v\n", *durationVar)
}
package main
import (
"flag"
"fmt"
"os"
)
func main() {
flag.Usage = func() {
fmt.Fprintf(os.Stderr, "Custom usage of %s:\n", os.Args[0])
flag.PrintDefaults()
}
flag.Parse()
}
package main
import (
"flag"
"fmt"
"time"
)
func main() {
var boolVar bool
var intVar int
var int64Var int64
var uintVar uint
var uint64Var uint64
var float64Var float64
var stringVar string
var durationVar time.Duration
flag.BoolVar(&boolVar, "bool", false, "flag.BoolVar")
flag.IntVar(&intVar, "int", 0, "flag.IntVar")
flag.Int64Var(&int64Var, "int64", 0, "flag.Int64Var")
flag.UintVar(&uintVar, "uint", 0, "flag.IntVar")
flag.Uint64Var(&uint64Var, "uint64", 0, "flag.Int64Var")
flag.Float64Var(&float64Var, "float64", 0, "flag.Float64Var")
flag.StringVar(&stringVar, "string", "", "flag.StringVar")
flag.DurationVar(&durationVar, "duration", 0, "flag.DurationVar") // time.ParseDuration で解析してくれる
flag.Parse()
fmt.Printf("flag.NFlag() = %d\n", flag.NFlag())
fmt.Printf("boolVar = %v\n", boolVar)
fmt.Printf("intVar = %v\n", intVar)
fmt.Printf("int64Var = %v\n", int64Var)
fmt.Printf("uintVar = %v\n", uintVar)
fmt.Printf("uint64Var = %v\n", uint64Var)
fmt.Printf("float64Var = %v\n", float64Var)
fmt.Printf("stringVar = %v\n", stringVar)
fmt.Printf("durationVar = %v\n", durationVar)
}
package main
import (
"flag"
"fmt"
)
func main() {
flag.Bool("bool", false, "flag.BoolVar")
flag.Int("int", 0, "flag.IntVar")
flag.Int64("int64", 0, "flag.Int64Var")
flag.Uint("uint", 0, "flag.IntVar")
flag.Uint64("uint64", 0, "flag.Int64Var")
flag.Float64("float64", 0, "flag.Float64Var")
flag.String("string", "", "flag.StringVar")
flag.Duration("duration", 0, "flag.DurationVar")
flag.Parse()
fmt.Println("----- Visit -----")
flag.Visit(func(f *flag.Flag) {
fmt.Println(f)
})
fmt.Println("")
fmt.Println("----- VisitAll -----")
flag.VisitAll(func(f *flag.Flag) {
fmt.Println(f)
})
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment