亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當文件位于文件夾中時,無法添加新的 cobra CLI 命令

當文件位于文件夾中時,無法添加新的 cobra CLI 命令

Go
繁星coding 2022-05-23 17:27:52
我正在使用 cobra 構建 CLI。我想創建一個名為的新命令config,該命令將位于文件config.go和文件夾內的文件proxy中。這是結構:MyProject├── cmd|  ├── proxy|  |    └── config.go|  └── root.go└── main.go  我用 cobra 創建了命令:cobra add config  它在下面創建了文件cmd,我將文件移動到文件proxy夾下(如上面的結構中所示)。問題是沒有添加命令。這是config.go代碼:// config.gopackage cmdimport (    "fmt"    "github.com/spf13/cobra"    "MyProject/cmd")var configCmd = &cobra.Command{    Use:   "config",    Short: "A brief description.",    Long: `A longer description.`,    Run: func(cmd *cobra.Command, args []string) {        fmt.Println("config called")    },}func init() {    cmd.RootCmd.AddCommand(configCmd)}它構建成功,但我在運行時看不到命令MyProj.exe -h。我做錯了什么嗎?
查看完整描述

1 回答

?
至尊寶的傳說

TA貢獻1789條經驗 獲得超10個贊

該包不包含在構建中,因此該命令永遠不會初始化。


Go 構建包。構建cmd包時,該包中的所有 go 文件都將被編譯,所有init()函數都將被調用。但是如果沒有引用proxy包,它就不會被編譯。


您的代理包package cmd在其中,因此該包是cmd代理目錄下的包。您應該將其重命名為proxypackage。


然后,將其包含在構建中。在 main.go 中:


import {

  _ "github.com/MyProject/cmd/proxy"

}

這將導致該init()包運行,并將自身添加到命令中。


查看完整回答
反對 回復 2022-05-23
  • 1 回答
  • 0 關注
  • 132 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號