我試圖弄清楚 Go-Cobra 中 PersistentFlags 和 Flags 之間的區別是什么,以及我們應該何時使用它們中的每一個。我讀過這個,但我不明白。
2 回答

青春有我
TA貢獻1784條經驗 獲得超8個贊
使用 Cobra 時,您定義了一個頂級命令:
prog
這個頂級命令有子命令。例如,假設我們有三個子命令init、start和stop。
prog init [-i] # initialize, but don't start anything: -i means ignore
prog start [-f] [-q] # after init, start: -f=fast, -q=quiet
prog stop [-f] # stop: -f=force
該-i標志僅用于init,因此我們-i在子命令中添加一個標志init。
該-q標志僅用于start,因此我們-q在子命令中添加一個標志start,依此類推。
現在我們想為每個命令添加一個調試模式。我們可以進入每個命令并添加一個--debug標志......但我們也可以為根命令設置一個持久標志。這個持久標志現在將在每個子命令中可用。
如果您有一個包含子子命令的子命令,則可以在子命令中設置一個持久標志,以使該標志出現在每個子子命令中,依此類推。

牛魔王的故事
TA貢獻1830條經驗 獲得超3個贊
Flags返回適用于此命令的完整 FlagSet(在此處和所有父級聲明的本地和持久性)。
PersistentFlags返回當前命令中專門設置的持久化標志集。
- 2 回答
- 0 關注
- 822 瀏覽
添加回答
舉報
0/150
提交
取消