3
我在寫一個需要訪問Internet的應用程序。從一些主機連接需要通過代理。我知道代理可以設置在一個環境變量上,但我想從應用程序本身來完成。 我需要一個可以用三種不同的方式使用的命令行參數:Go中的「3態」命令行參數
- 根本不給 - >無代理
- --use代理 - >使用默認的代理
- --use-代理「http://my-proxy.com:880」 - >使用指定的代理
以下用途默認或指定的地址,但不能用於忽略代理:
use_proxy:= flag.String( 「使用代理」, 「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")
...
}
問題可以用兩個標誌來解決,但我寧願只使用一個:
MYAPP --use代理--proxy「http://my-proxy.com:880」
問題是分析器不會接受沒有值的參數。您至少需要像'myapp --use-proxy ='中那樣的'='。然後你可以通過沒有通過標誌來區分。 – 2013-03-26 09:42:57
你的應用程序將如何解釋命令行,如'myapp --use-proxy --some-other-flag'? – 2013-03-26 09:52:16
關於我最後一條評論的精度:解析器接受沒有值的參數,但只接受類型爲「boolValue」的Val(它是硬編碼的)。 – 2013-03-26 09:55:18