更新 2021-9-26我發(fā)現(xiàn)這是一個愚蠢的問題。這是因為標志將在調(diào)用標志后更新。解析()。nReq := *flag_varflag.Parse() // flag_var updatefmt.Println(nReq) // nReq is unchanged. 因此,最佳做法是使用標志。取而代之的是 IntVar(),我們可以鍵入更少的字符。為什么我不能像這樣使用返回值的點類型?// test.gonReq := *flag.Int("n", 10000, "set total requests")flag.Parse()fmt.Println(nReq)// test -n 20010000// the value is still 10000.它始終返回默認值 (10000)。我需要使用:nReq := flag.Int("n", 10000, "set total requests")flag.Parse()fmt.Println(*nReq)// test -n 200200// the value is updated to the new flag(200)
1 回答

MMTTMM
TA貢獻1869條經(jīng)驗 獲得超4個贊
旗。Int()
不會“立即”解析標志,它只是返回一個指向變量的指針,在解析時將存儲標志值。
因此,如果您立即取消引用它,則只會獲得您提供的默認值。你必須叫旗幟。解析()
。
如果不想使用指針,請在前面聲明變量,并使用 flag。例如
:
var nReq int
flag.IntVar(&nReq, "n", 10000, "set total requests")
flag.Parse()
fmt.Println(nReq)
現(xiàn)在不是指針,您可以使用它而不必一直取消引用。nReq
另一種選擇是繼續(xù)使用 ,并在 調(diào)用后取消引用返回的指針一次:int.Var()flag.Parse()
nReqPtr := flag.Int("n", 10000, "set total requests")
flag.Parse()
nReq := *nReqPtr
fmt.Println(nReq)
- 1 回答
- 0 關(guān)注
- 82 瀏覽
添加回答
舉報
0/150
提交
取消