猿问

Golang flag变量调用的方式

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

qq_花开花谢_0

使用flag.IntVarpackagemainimport("flag""fmt")varworkersint;funcmain(){flag.IntVar(&workers,"r",1,"concurrentprocessing,default1.")flag.Parse()fmt.Println(workers);}不过从设计上来讲,用全局变量不是一个好方法

青春有我

全局变量的方式在go中很少使用吧(你看看标准库,全局变量一般不超过三个)。我认为你可以通过包内另外定义一个取得命令行解析参数的函数。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答