Моя цель - "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);
}
}
}