Cmd 控制器

home 模块提供了一个 cmd 的 hello world 程序,cmd 中我们使用了 cobra 命令行类库。所以 cobra 对象的使用可以直接参考官方文档,我们在这里主要帮你完成了路由注册和参数注册。

1. 路由注册

func init() {
    homeCmd := new(HomeCmd)
    // 注册路由
    yago.AddCmdRouter("demo", "Demo action", homeCmd.DemoAction, yago.CmdArg{
        Name: "arg", Shorthand: "a", Value: "value", Usage: "参数", Required: true,
    })
}

init 函数内完成了 Action 级别的路由注册。cmd 路由注册主要通过 yago.AddCmdRouter 这个函数来完成。参数含义如下表格

AddCmdRouter 参数说明

参数位置 参数类型 说明
1 String 命令行路径
2 String 命令简要说明
3 Func 命令行对应的 Action Func
>=4 yago.AddCmdRouter 命令行flag参数对象
可以配置参数的名称,缩写,默认值,参数含义,是否必须

2. CmdAction

Cmd Action 接收两个参数一个 cmd *cobra.Command 用来获取 flag 参数,另外一个 args 用来获取非 flag 参数。

func (c *HomeCmd) DemoAction(cmd *cobra.Command, args []string) {
    if arg, err := cmd.Flags().GetString("arg"); err != nil {
        fmt.Println(err)
    } else {
        fmt.Println("arg: " + arg)
    }
}

3. CmdArg

cmd 支持多个类型的参数,目前支持的类型如下

参数类型 CmdArg 说明
string CmdArg 字串, eg. -s=hello
int CmdIntArg 整型,eg. -i=10
int64 CmdInt64Arg 64整型, eg. -x=64
bool CmdBoolArg 布尔类型,eg. -b=false
float CmdFloat64Arg 浮点类型,eg. -f=3.14
duration CmdDurationArg 时间类型,eg. -d=10s
string slice CmdStringSliceArg 字串数组,eg. -y=a,b,c
int slice CmdIntSliceArg 整型数组,eg. -z=1,2,3

results matching ""

    No results matching ""