package main import ( "flag" "fmt" "os" ) func main() { // 初始化子命令FlagSet startCmd := flag.NewFlagSet("start", flag.ContinueOnError) stopCmd := flag.NewFlagSet("stop", flag.ContinueOnError) // 子命令私有参数 var port int var config string startCmd.IntVar(&port, "port", 8080, "服务监听端口") stopCmd.StringVar(&config, "config", "./config.yaml", "服务配置文件") // 校验子命令是否传入 if len(os.Args) < 2 { fmt.Println("可用子命令:start / stop") os.Exit(1) } // 路由分发 switch os.Args[1] { case "start": _ = startCmd.Parse(os.Args[2:]) fmt.Printf("启动服务成功,端口:%d\n", port) case "stop": _ = stopCmd.Parse(os.Args[2:]) fmt.Printf("停止服务,配置文件:%s\n", config) default: fmt.Printf("未知子命令:%s\n", os.Args[1]) os.Exit(1) } }