为了账号安全,请及时绑定邮箱和手机立即绑定

如何让每个眼镜蛇命令解析自己的标志?获取初始化循环(预期,但如何避免?)

如何让每个眼镜蛇命令解析自己的标志?获取初始化循环(预期,但如何避免?)

Go
忽然笑 2023-05-15 09:46:28
我正在遵循https://github.com/spf13/cobra#flags上的指南,但我对那里的一些内容感到困惑。我有一些服务(rest api、电子邮件服务、事件),我正在尝试做这样的事情:go run *.go rest -env DEV -p 3000go run *.go events -env DEV -p 3001我正在关注 github 页面,所以我定义了我的 rootCmd 和 restCmd:var rootCmd = &cobra.Command{    Use: "myappname",}var restCmd = &cobra.Command{    Use:   "rest",    Short: "REST API",    Long:  "REST API",    Run:   runRest,}在runRest方法中,我应该做类似的事情吗var env stringrestCmd.Flags().StringVarP(&env, "env", "env", "", "environment")请告诉我。谢谢
查看完整描述

1 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

每个子命令都可以有自己的标志。您可以按以下方式执行此操作:


package main


import (

    "fmt"

    "log"


    "github.com/spf13/cobra"

)


var rootCmd = &cobra.Command{

    Use: "app",

}


func NewCmdRest() *cobra.Command {

    var env string

    var restCmd = &cobra.Command{

        Use: "rest",

        Run: func(cmd *cobra.Command, args []string) {

            fmt.Println("rest:", env)

        },

    }


    restCmd.Flags().StringVarP(&env, "env", "e", "", "environment")

    return restCmd

}


func NewCmdEvent() *cobra.Command {

    var env string

    var eventCmd = &cobra.Command{

        Use: "event",

        Run: func(cmd *cobra.Command, args []string) {

            fmt.Println("event:", env)

        },

    }


    eventCmd.Flags().StringVarP(&env, "env", "e", "", "environment")

    return eventCmd

}


func init() {

    rootCmd.AddCommand(NewCmdRest())

    rootCmd.AddCommand(NewCmdEvent())

}


func main() {

    if err := rootCmd.Execute(); err != nil {

        log.Fatal(err)

    }

}


查看完整回答
反对 回复 2023-05-15
  • 1 回答
  • 0 关注
  • 90 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信