2012-06-17 3 views
0

Эта программа возвращает:От флага, как вы возвращаете (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) 
} 

Однако это не кажется правильным ... Потому что мне нужно написать 2 строки кода, когда 1 следует делать , почему-то мне кажется, что

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

Если вернуть Int вместо * междунар.? Или, может быть, есть простой способ отличить от * int до int ??

ответ

2

Просто разыменования указателя:

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

Yeap благодаря другой вопрос, который я разместил: http://stackoverflow.com/questions/11075408/type-conversion -from-type-int-to-type-int/11075463 # 11075463 Я начинаю понимать, что происходит :-) спасибо. – elviejo79

1

Вы также можете попробовать:

var num_agents int 

func init() { 
    flag.IntVar(&num_agents, "a", 10, "number of agents") 
} 
Смежные вопросы