我正在编写一个需要访问Internet的应用程序。从某些主机,连接需要通过代理。我知道可以在环境变量上设置代理,但我想从应用程序本身进行设置。 我需要一个可以以三种不同方式使用的命令行参数:
以下使用默认或给定地址但不能用于忽略代理:
use_proxy:= flag.String(“use-proxy”,“http://my-proxy.com:880”,“使用代理......”)
这只完成了第1点和第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 --proxy“http://my-proxy.com:880”
答案 0 :(得分:3)
如果您的应用肯定不会使用任何其他命令行参数,那么您只需使--use-proxy
成为布尔标志,然后从第一个命令行参数获取代理URL,即从{{1}获取}。
这可能不是长期的好主意,因为它限制了为你的程序添加额外的参数/选项。
大多数参数解析器都不会处理这样的情况,因为它会使解析命令行选项不明确。
其他选项可以是允许使用默认值的关键字,例如:
os.Args
或使用两个选项,两个选项都启用代理,但只有一个选择参数,例如:
myapp --use-proxy "http://my-proxy.com:880"
myapp --use-proxy default