从flag如何返回(int)而不是(* int)?

时间:2012-06-17 23:24:57

标签: go

该程序返回:

package main

import (
    "flag"
    "fmt"
)

func main() {
    num_agents := flag.Int("a", 10, "number of agents")
    flag.Parse();

    fmt.Printf("%#v",num_agents)
}

输出

(*int)(0x18600110)`

然而,这不是我想要的......我想要的是整数。

所以根据文档似乎我应该使用flag.IntVar(& pointer_to_variable_integer)

package main

import (
    "flag"
    "fmt"
)

func main() {
    var num_agents int
    flag.IntVar(&num_agents,"a", 10, "number of agents")
    flag.Parse();

    fmt.Printf("%#v",num_agents)
}

然而这似乎并不正确...因为我需要在1应该写2行代码。 不知怎的,在我看来

num_agents := flags.Int("a", 10, "number of agents") 

应该返回一个int而不是* int。  或者也许有一种简单的方法可以从* int转换为int ??

2 个答案:

答案 0 :(得分:2)

简单地取消引用指针:

num_agents := flags.Int("a", 10, "number of agents")
fmt.Println(*num_agents)

答案 1 :(得分:1)

您也可以尝试:

var num_agents int

func init() {
    flag.IntVar(&num_agents, "a", 10, "number of agents")
}