go - 如何从 Go 中的子命令打印所有命令?
问题描述
我想在 Golang 中创建一个打印所有父命令的子命令。例子:
$ cli-tool list
Commands available:
- h, help for more info
- version for current version of tool
- list to list all commands
当前代码:
package main
import (
"fmt"
"os"
"flag"
)
func main() {
version := flag.NewFlagSet("version", flag.ExitOnError)
list := flag.NewFlagSet("list", flag.ExitOnError)
switch os.Args[1] {
case "version":
version.Parse(os.Args[2:])
case "list":
list.Parse(os.Args[2:])
}
if version.Parsed() {
fmt.Println("5e")
os.Exit(1)
}
if list.Parsed() {
flag.PrintDefaults()
os.Exit(1)
}
}
结果:
$cli-tool list
$
(没有命令打印。)
我认为这是从“列表”命令中提取的,而不是所有基本命令。我希望它打印“版本”和“列表”,但它不打印任何东西。有没有办法可以调整它以使“PrintDefaults”始终引用父命令?
提前致谢!
解决方案
推荐阅读
- mongodb - 来自heroku java应用程序的MongoDB“未发送SNI名称”错误
- vector - 有没有办法获得对向量元素的可变引用和对其他元素的不可变引用?
- python - 在 Python 3 中检测到关键字后提取某个引号
- python - 我在哪里可以找到 numpy.where() 源代码?
- javascript - 找不到 API 调用模块的 XMLHttpRequest 错误
- .net - 如何在 Team Foundation Server 2018 中创建层次结构?
- javascript - 我的 reactjs 按钮设计在平板电脑与平板电脑按钮上的 onTouch 感觉很慢
- css - Bootstrap 移动响应问题
- python - 从同一网站的不同链接中获取数据
- java - 无法将值传递回基类/布尔值始终返回 false