0

该程序返回:

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)
}

但是,这似乎不对...因为我需要编写 2 行代码,而 1 应该这样做。在我看来,不知何故

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

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

4

2 回答 2

2

只需取消引用指针:

num_agents := flags.Int("a", 10, "number of agents")
fmt.Println(*num_agents)
于 2012-06-17T23:27:55.203 回答
1

你也可以试试:

var num_agents int

func init() {
    flag.IntVar(&num_agents, "a", 10, "number of agents")
}
于 2014-05-31T04:23:36.047 回答