2012-06-17 33 views
0

該程序返回:From flag如何返回(int)而不是(* int)?

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時應該做的。 不知何故,在我看來,

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

應該返回一個int,而不是*爲int? 或者也許有一個簡單的方法來從* int轉換爲int?

回答

2

簡單地取消引用指針:

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

葉氏感謝我張貼的其他問題:http://stackoverflow.com/questions/11075408/type-conversion -from-type-in​​t-int/11075463#11075463 我開始明白是怎麼回事了:-)謝謝。 – elviejo79

1

你還可以嘗試:

var num_agents int 

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