package main
// Go provides a `flag` package supporting basic
// command-line flag parsing. We'll use this package to
// implement our example command-line program.
import "flag"
import "fmt"
func main() {
// Basic flag declarations are available for string,
// integer, and boolean options. Here we declare a
// string flag `word` with a default value `"foo"`
// and a short description. This `flag.String` function
// returns a string pointer (not a string value);
// we'll see how to use this pointer below.
wordPtr := flag.String("word", "foo", "a string")
// This declares `numb` and `fork` flags, using a
// similar approach to the `word` flag.
numbPtr := flag.Int("numb", 42, "an int")
boolPtr := flag.Bool("fork", false, "a bool")
// It's also possible to declare an option that uses an
// existing var declared elsewhere in the program.
// Note that we need to pass in a pointer to the flag
// declaration function.
var svar string
flag.StringVar(&svar, "svar", "bar", "a string var")
// Once all flags are declared, call `flag.Parse()`
// to execute the command-line parsing.
flag.Parse()
// Here we'll just dump out the parsed options and
// any trailing positional arguments. Note that we
// need to dereference the pointers with e.g. `*wordPtr`
// to get the actual option values.
fmt.Println("word:", *wordPtr)
fmt.Println("numb:", *numbPtr)
fmt.Println("fork:", *boolPtr)
fmt.Println("svar:", svar)
fmt.Println("tail:", flag.Args())
}
5条答案
按热度按时间rryofs0p1#
您可以使用
os.Args
变量访问命令行参数。例如,字符串
您还可以使用flag package,它实现命令行标志解析。
hc8w905p2#
Flag是一个很好的包。
Mark McGranaghan和Eli Bendersky的https://gobyexample.com/command-line-flags代码示例和注解:
字符串
bprjcwpo3#
快速回答:
字符串
测试:
$ go run test.go 1 2 3 4 5
退出:
型
注意事项:
os.Args
提供对原始命令行参数的访问。请注意,此切片中的第一个值是程序的路径,os.Args[1:]
保存程序的参数。Reference4nkexdtk4#
命令行参数可以在os.Args中找到。在大多数情况下,flag包更好,因为它为您解析参数。
kmynzznz5#
如果你只是想要一个论证列表,彼得的答案正是你所需要的。
但是,如果您正在寻找与UNIX上类似的功能,那么可以使用docopt的go implementation。您可以尝试here。
docopt将返回JSON,然后您可以根据自己的需要进行处理。