为了账号安全,请及时绑定邮箱和手机立即绑定

Golang flag变量调用的方式

Golang flag变量调用的方式

翻阅古今 2019-04-09 20:25:00
在写一些工具的时候总会使用flag这个package.因为很是方便.但今天我在反复调用的时候发现总是需要使用*号是否有办法不这样调用?或者说flag的正确的变量调用应该是怎么样的.举例说明:我的一般用法,采用了*workers这种方式调用.packagemainimport("flag""fmt")varworkers=flag.Int("r",1,"concurrentprocessing,default1.")funcmain(){flag.Parse()fmt.Println(*workers)}运行:./do-r4结果为4但是我想在变量使用的时候不使用*worker,而是worker的方式.而且是一个全局变量的方式,其它函数也都可以使用,因为基本上这个变量是不会改变的.以下是我错误的用法:因为没有flag.Parse()所以默认的结果肯定是默认值1packagemainimport("flag""fmt")varworkers=flag.Int("r",1,"concurrentprocessing,default1.")varnewworkers=*workersfuncmain(){flag.Parse()fmt.Println(newworkers)}运行:./do-r4结果为1如果我要正确的使用flag的变量,并且实现我的想法该如何做呢?@jex提供的一个方法IntVar不能在var,可以在放置在initpackagemainimport("flag""fmt")varworkersint;funcinit(){flag.IntVar(&workers,"r",1,"concurrentprocessing,default1.")}funcmain(){flag.Parse()fmt.Println(workers)}
查看完整描述

2 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

使用flag.IntVar
packagemain
import(
"flag"
"fmt"
)
varworkersint;
funcmain(){
flag.IntVar(&workers,"r",1,"concurrentprocessing,default1.")
flag.Parse()
fmt.Println(workers);
}
不过从设计上来讲,用全局变量不是一个好方法
                            
查看完整回答
反对 回复 2019-04-09
?
青春有我

TA贡献1784条经验 获得超8个赞

全局变量的方式在go中很少使用吧(你看看标准库,全局变量一般不超过三个)。我认为你可以通过包内另外定义一个取得命令行解析参数的函数。
                            
查看完整回答
反对 回复 2019-04-09
  • 2 回答
  • 0 关注
  • 319 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信