ホームページ > バックエンド開発 > Golang > go で urfave/cli を使用して `BoolFlags` を 1 つにマージします

go で urfave/cli を使用して `BoolFlags` を 1 つにマージします

PHPz
リリース: 2024-02-09 17:33:08
転載
1114 人が閲覧しました

使用 go 中的 urfave/cli 将 `BoolFlags` 合并为一个

php Editor Banana は、Go 言語の urfave/cli ライブラリを使用して BoolFlags を 1 つにマージする方法を紹介します。 urfave/cli は、エレガントなコマンド ライン アプリケーションの作成に役立つ強力なコマンド ライン ライブラリです。コマンド ライン アプリケーションでは、特定のスイッチやオプションが有効かどうかを示すために使用されるさまざまな BoolFlags (ブール フラグ) を処理する必要があることがよくあります。ただし、BoolFlags が多数ある場合、コードは冗長になり、保守が困難になります。 urfave/cli を使用すると、複数の BoolFlags を 1 つに簡単にマージでき、コードがより簡潔で理解しやすくなります。次に、具体的な実装方法を見ていきましょう。

質問内容

-f/--fooまたは-b/--barのパラメータを取得できるコードがあります。パラメーターの解析は、2 番目に人気のある go パラメーター パーサーである urfave/cli パッケージを通じて行われます。 go run のようにプログラムを実行できます。 -f -b ですが、 go run とは異なります。 -fb go run で機能させる方法はありますか。 -fb urfave/cli を使用しますか? それが不可能な場合、どの go モジュールを使用すれば可能になりますか?

コード:

リーリー ###テスト###
package main

import (
    "fmt"
    "log"
    "os"

    "github.com/urfave/cli/v2"
)

func main() {
    var foo_count, bar_count bool

    app := &cli.app{
        flags: []cli.flag{
            &cli.boolflag{
                name:    "foo",
                usage:   "foo",
                aliases: []string{"f"},
                destination:   &foo_count,
            },
            &cli.boolflag{
                name:    "bar",
                usage:   "bar",
                aliases: []string{"b"},
                destination:   &bar_count,
            },
        },
        action: func(cctx *cli.context) error {
            fmt.println("foo_count", foo_count)
            fmt.println("bar_count", bar_count)
            return nil
        },
    }

    if err := app.run(os.args); err != nil {
        log.fatal(err)
    }
}
ログイン後にコピー

解決策

この問題は、パッケージの例で具体的に解決されています。 cli を作成するときに

UseShortOptionHandling: true

を追加します。

https://github .com/urfave/cli/blob/main/docs/v2/examples/combining-short-options.md

ドキュメントより: これは、アプリケーション構成で

UseShortOptionHandling

ブール値を使用するか、単一のコマンドに対してコマンド構成に追加することで実行できます。

以上がgo で urfave/cli を使用して `BoolFlags` を 1 つにマージしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:stackoverflow.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート