os库
package main
import (
"fmt"
"os"
)
func main() {
fmt.Println("os.Args")
}
Argsos.Args
flag包
package main
import (
"flag"
"fmt"
)
func main() {
name := flag.String("name", "golang", "the name")
var year int
flag.IntVar(&year, "year", 2009, "the year")
flag.Parse()
fmt.Println("name:", *name)
fmt.Println("year:", year)
}
执行go run test.go,会得到
name: golang
year: 2009
当执行go run test.go -name=“benben” -year=2015。将会输出
name: benben
year: 2015
常用函数解析
flag.String(name string, value string, usage string)
func String(name string, value string, usage string) *string {
return CommandLine.String(name, value, usage)
}
func (f *FlagSet) String(name string, value string, usage string) *string {
p := new(string)
f.StringVar(p, name, value, usage)
return p
}
func (f *FlagSet) StringVar(p *string, name string, value string, usage string) {
f.Var(newStringValue(value, p), name, usage)
}
func (f *FlagSet) Var(value Value, name string, usage string) {
// Remember the default value as a string; it won't change.
flag := &Flag{name, usage, value, value.String()}
_, alreadythere := f.formal[name]
if alreadythere {
var msg string
if f.name == "" {
msg = fmt.Sprintf("flag redefined: %s", name)
} else {
msg = fmt.Sprintf("%s flag redefined: %s", f.name, name)
}
fmt.Fprintln(f.Output(), msg)
panic(msg) // Happens only if flags are declared with identical names
}
if f.formal == nil {
f.formal = make(map[string]*Flag)
}
f.formal[name] = flag
}
flag.StringVar(p *string, name string, value string, usage string)
func StringVar(p *string, name string, value string, usage string) {
CommandLine.Var(new StringValue(value, p), name, usage)
}
func (f *FlagSet) Var(value Value, name string, usage string) {
// Remember the default value as a string; it won't change.
flag := &Flag{name, usage, value, value.String()}
_, alreadythere := f.formal[name]
if alreadythere {
var msg string
if f.name == "" {
msg = fmt.Sprintf("flag redefined: %s", name)
} else {
msg = fmt.Sprintf("%s flag redefined: %s", f.name, name)
}
fmt.Fprintln(f.Output(), msg)
panic(msg) // Happens only if flags are declared with identical names
}
if f.formal == nil {
f.formal = make(map[string]*Flag)
}
f.formal[name] = flag
}
flag.Parse()os.Args[1:]
func Parse() {
CommandLine.Parse(os.Args[1:])
}