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

しかし、それは正しくないようです... 1行のコードを書く必要があるのに、2行のコードを書く必要があるからです。どういうわけか私にはそう思われる

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 に答える