我的目标是让“init”、“init -site=test”、两个版本的 init 以及独立的“debug”命令在命令行上被接受,并将剩下的任何内容视为文件名。
实际发生的情况是,在“init -site=test”的情况下,由于某种原因,“-site=test”也被接受为文件名。我怎样才能阻止这种情况发生?
package main
import (
"flag"
"fmt"
"os"
)
func main() {
initCmd := flag.NewFlagSet("init", flag.ExitOnError)
initSiteName := initCmd.String("site", "", "Main name for your site")
flag.Parse()
for pos, cmd := range os.Args {
switch cmd {
case "debug":
fmt.Printf("debug\n")
case "init":
initCmd.Parse(os.Args[pos+1:])
fmt.Printf("init\n site name:%v\n", *initSiteName)
default:
fmt.Printf("Filename: %v\n", cmd);
}
}
}
呼如林
相关分类