Golang flag变量调用的方式

在写一些工具的时候总会使用flag这个package.因为很是方便.但今天我在反复调用的时候发现总是需要使用*号是否有办法不这样调用? 或者说flag的正确的变量调用应该是怎么样的.

举例说明:
我的一般用法,采用了*workers这种方式调用.

package main
import (
    "flag"
    "fmt"
)

var     workers = flag.Int("r", 1, "concurrent processing ,default 1 .")

func main(){
flag.Parse()
fmt.Println(*workers)
}

运行:

./do -r 4 结果为4

但是我想在变量使用的时候不使用*worker,而是worker的方式.而且是一个全局变量的方式,其它函数也都可以使用,因为基本上这个变量是不会改变的.

以下是我错误的用法: 因为没有flag.Parse()所以默认的结果肯定是默认值1

package main
import (
    "flag"
    "fmt"
)

var     workers = flag.Int("r", 1, "concurrent processing ,default 1 .")
var   newworkers=*workers
func main(){
flag.Parse()
fmt.Println(newworkers)
}

运行:

./do -r 4 结果为1

如果我要正确的使用flag的变量,并且实现我的想法该如何做呢?


@jex提供的一个方法 IntVar不能在var,可以在放置在init

package main

import (
    "flag"
    "fmt"
)

var workers int;
func init(){
flag.IntVar(&workers,"r", 1, "concurrent processing ,default 1 .")
}

func main() {
    flag.Parse()
    fmt.Println(workers)
}
查看回复