39 lines
856 B
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)
|
|
}
|
|
}
|