概述
- 大体上与
flag
包相同, flag 包使用 - 支持非标识符的传参
方法清单
- 输出信息
-
kingpin.Version()
: 输出版本信息 -
kingpin.FatalIfError()
: 如果有报错, 打印错误信息, 并退出 -
kingpin.Fatalf()
: 打印错误信息, 并退出 -
kingpin.Errorf()
: 打印错误信息, 不退出 -
kingpin.FatalUsage()
: 如果有报错, 打印帮助信息 -
kingpin.Usage()
: 打印帮助信息
- 创建参数
-
kingpin.Arg()
: 创建固定参数(按顺序传入, 不需要 --flag 指定) -
kingpin.Flag()
: 创建可选参数
- 解析参数
-
kingpin.Parse()
: 用法同flag
-
kingpin.MustParse()
:Parse()
底层调用的它
- 其他:
kingpin.New()
kingpin.ExpandArgsFromFile()
kingpin.UsageTemplate()
kingpin.Command()
-
kingpin.HelpFlag.Short('h')
: 启动 -h
接收类型
- 按接收方式分(以
string
类型为例)
-
kingpin.Flag().String()
: 直接指针接收 -
kingpin.Flag().StringVar()
: 先创建变量, 用该变量指针接收
- 按类型分(不同类型有不同的方法, 以
string
为例)
kingpin.Flag().String()
-
kingpin.Flag().Strings()
: 以[]string
接收, 接收值为多个时, 必选参数只能有一个, 否则无法区分 -
kingpin.Flag().StringMap()
: 以map[string]string
类型接收 - 其他类型可能没有 map, 如
Bool()
和BoolList()
限制
-
kingpin.Flag().Required().String()
: 必传 -
kingpin.Flag().IP()
: ip 格式 -
kingpin.Flag().Duration()
: 时间格式,10s
,2m
,3h
-
kingpin.Flag().Short()
: 设置短参数 -
kingpin.Flag().Default()
: 设置默认值 -
kinpin.Flag().Envar()
: 使用环境变量
示例
package main
import (
"fmt"
"gopkg.in/alecthomas/kingpin.v2"
)
func main() {
// 必须为 IP 格式
ip := kingpin.Flag("ip", "IP addr").IP()
// 必传
pwd := kingpin.Flag("pwd", "Password").Required().String()
// Int 类型
hostID := kingpin.Flag("hostID", "HostID").Int()
// time
time := kingpin.Flag("time", "Time").Duration()
// 解析
kingpin.Parse()
fmt.Println(*ip, *pwd, *hostID, *time)
}