Files
bulma/flag/subcommand.go

39 lines
856 B
Go

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)
}
}