你可以做到這一點使用command line arguments和flags的組合。
例如,
configFilePtr := flag.String("filename", "", "Config Filename")
flag.Parse()
n := len(os.Args)
if n > 1 {
switch os.Args[1] {
case "init":
initApp(*configFilePtr)
case "check":
checkApp(*configFilePtr)
case "run":
runApp()
}
}
另一種選擇是使用諸如spf13's cobra
之類的東西。
更新:
如果您需要使用不同的標誌的按命令可以使用FlagSet在Kare Nuorteva
的答覆中提到。
例如,
f1 := flag.NewFlagSet("f1", flag.ContinueOnError)
silent := f1.Bool("silent", false, "")
f2 := flag.NewFlagSet("f2", flag.ContinueOnError)
loud := f2.Bool("loud", false, "")
switch os.Args[1] {
case "apply":
if err := f1.Parse(os.Args[2:]); err == nil {
fmt.Println("apply", *silent)
}
case "reset":
if err := f2.Parse(os.Args[2:]); err == nil {
fmt.Println("reset", *loud)
}
}
Reference
這將是非常酷的,如果你加入的實施是如何工作的一個小例子。 – miltonb