3

私はインターネットへのアクセスを必要とするアプリケーションを書いています。一部のホストからは、接続はプロキシを経由する必要があります。プロキシは環境変数に設定できることは知っていますが、アプリケーション自体から設定したいと思います。3つの異なる方法で使用できるコマンドライン引数が必要です。

  1. まったく与えられていない->プロキシなし
  2. --use-proxy->デフォルトのプロキシを使用
  3. --use-proxy" http://my-proxy.com:880 "->指定されたプロキシを使用します

以下はデフォルトまたは指定されたアドレスを使用しますが、プロキシを無視するために使用することはできません。

use_proxy:= flag.String( "use-proxy"、 " http://my-proxy.com:880 "、 "プロキシを使用...")

これはポイント1と2のみを達成します。

use_proxy := flag.Bool("use-proxy", false , "Use proxy...")
if *use_proxy {
  ...
  proxyUrl, err := url.Parse("http://my-proxy.com:880")
  ...
}

この問題は2つのフラグで解決できますが、1つだけを使用したいと思います。

myapp --use-proxy --proxy " http://my-proxy.com:880 "

4

1 に答える 1

3

アプリが他のコマンドライン引数を確実に使用しない場合は--use-proxy、ブールフラグを作成し、最初のコマンドライン引数からプロキシURLを取得できますos.Args

ただし、これはプログラムへの追加の引数/オプションの追加を制限するため、長期的には良い考えではありません。

ほとんどの引数パーサーは、コマンドラインオプションの解析をあいまいにするため、このようなケースを処理しません。

他のオプションは、デフォルト値のキーワードを許可することです。例:

myapp --use-proxy "http://my-proxy.com:880"
myapp --use-proxy default

または、2つのオプションを使用します。どちらもプロキシを有効にしますが、引数を取るのは1つだけです。例:

myapp --use-proxy <proxy URL>
myapp --use-default-proxy
于 2013-03-26T09:37:14.053 に答える