登录
首页 >  Golang >  Go问答

如何在 cobra (golang) 中将标志作为参数传递?

来源:stackoverflow

时间:2024-04-21 15:54:34 317浏览 收藏

珍惜时间,勤奋学习!今天给大家带来《如何在 cobra (golang) 中将标志作为参数传递?》,正文内容主要涉及到等等,如果你正在学习Golang,或者是对Golang有疑问,欢迎大家关注我!后面我会持续更新相关内容的,希望都能帮到正在学习的大家!

问题内容

我正在使用 cobra 创建 cli 应用程序 (app)。我需要实现一种行为,我可以将标志作为参数传递。这些标志将通过 exec.command() 进一步传递|使用到另一个应用程序。传递给 app 的所有标志参数都必须被 app 本身忽略,即不被识别为标志。

我不排除这是奇怪的行为。但如果有机会实施我将不胜感激。

与应用程序交互的示例:

> app --help
or
> app --first --second

我希望参数(--help --first --second 以及所有其他参数)不被视为 app 的标志。


正确答案


您可以在双破折号 -- 之后传递它们,按照惯例,这表明以下标志和参数并不意味着被解释为主程序的参数和标志。除非您以某种方式明确使用它们,否则它们将被忽略。即:

if len(pflag.args()) != 0 {
    afterdash := pflag.args()[pflag.commandline.argslenatdash():]
    fmt.printf("args after dash: %v\n", afterdash)
}
$ go run ./cmd/tpl/ -d yaml -- --foo --bar
args after dash: [--foo --bar]

cobra 正在使用 pflag 包 https://pkg.go.dev/github.com/spf13/pflag

终于介绍完啦!小伙伴们,这篇关于《如何在 cobra (golang) 中将标志作为参数传递?》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>