返回顶部
首页 > 资讯 > 后端开发 > GO >如何让每个 cobra 命令解析自己的标志?获取初始化循环(预期,但如何避免?)
  • 477
分享到

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

2024-04-05 00:04:25 477人浏览 泡泡鱼
摘要

本篇文章给大家分享《如何让每个 cobra 命令解析自己的标志?获取初始化循环(预期,但如何避免?)》,覆盖了golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这

本篇文章给大家分享《如何让每个 cobra 命令解析自己的标志?获取初始化循环(预期,但如何避免?)》,覆盖了golang的常见基础知识,其实一个语言的全部知识点一篇文章是不可能说完的,但希望通过这些问题,让读者对自己的掌握程度有一定的认识(B 数),从而弥补自己的不足,更好的掌握它。

问题内容

我正在遵循 https://GitHub.com/spf13/cobra#flags 上的指南,但我对那里的一些内容感到困惑。

我有一些服务(rest api、电子邮件服务、事件),我正在尝试做这样的事情:

Go 运行 *.go rest -env dev -p 3000

go 运行 *.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 string
restCmd.Flags().StringVarP(&env, "env", "env", "", "environment")

请告诉我。

谢谢


解决方案


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

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)
    }
}

好了,本文到此结束,带大家了解了《如何让每个 cobra 命令解析自己的标志?获取初始化循环(预期,但如何避免?)》,希望本文对你有所帮助!关注编程网公众号,给大家分享更多Golang知识!

您可能感兴趣的文档:

--结束END--

本文标题: 如何让每个 cobra 命令解析自己的标志?获取初始化循环(预期,但如何避免?)

本文链接: https://lsjlt.com/news/596847.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作