首次提交:初始化项目代码
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
)
|
||||
|
||||
// PortValue 自定义端口类型,实现flag.Value接口
|
||||
type PortValue int
|
||||
|
||||
func (p *PortValue) Set(s string) error {
|
||||
var port int
|
||||
_, err := fmt.Sscanf(s, "%d", &port)
|
||||
if err != nil || port < 1 || port > 65535 {
|
||||
return fmt.Errorf("非法端口,必须为1-65535整数")
|
||||
}
|
||||
*p = PortValue(port)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (p *PortValue) String() string {
|
||||
return fmt.Sprintf("%d", *p)
|
||||
}
|
||||
|
||||
// EnvValue 枚举环境校验类型
|
||||
type EnvValue string
|
||||
|
||||
func (e *EnvValue) Set(s string) error {
|
||||
if s != "dev" && s != "prod" {
|
||||
return fmt.Errorf("仅支持 dev/prod 环境")
|
||||
}
|
||||
*e = EnvValue(s)
|
||||
return nil
|
||||
}
|
||||
|
||||
func (e *EnvValue) String() string {
|
||||
return string(*e)
|
||||
}
|
||||
|
||||
func main() {
|
||||
var port PortValue
|
||||
var env EnvValue
|
||||
flag.Var(&port, "port", "服务端口 1-65535")
|
||||
flag.Var(&env, "env", "运行环境 dev/prod")
|
||||
config := flag.String("config", "", "配置文件路径(必填)")
|
||||
|
||||
flag.Parse()
|
||||
|
||||
// 后置非空校验
|
||||
if *config == "" {
|
||||
fmt.Println("错误:config 参数不能为空")
|
||||
flag.Usage()
|
||||
os.Exit(1)
|
||||
}
|
||||
|
||||
fmt.Printf("环境:%s,端口:%d,配置:%s\n", env, port, *config)
|
||||
}
|
||||
Reference in New Issue
Block a user