3 回答

TA貢獻1797條經(jīng)驗 獲得超6個贊
os.Args
對flag
軟件包一無所知,并且包含所有命令行參數(shù)。嘗試flag.Args()(flag.Parse()
當然是在調用之后)。

TA貢獻1818條經(jīng)驗 獲得超8個贊
這也讓我絆倒了,因為我flag.String/flag.Int64/etc在我的應用程序中調用了幾個地方,我不想到處傳遞一個新flag.FlagSet的。
// If a commandline app works like this: ./app subcommand -flag -flag2
// `flag.Parse` won't parse anything after `subcommand`.
// To still be able to use `flag.String/flag.Int64` etc without creating
// a new `flag.FlagSet`, we need this hack to find the first arg that has a dash
// so we know when to start parsing
firstArgWithDash := 1
for i := 1; i < len(os.Args); i++ {
firstArgWithDash = i
if len(os.Args[i]) > 0 && os.Args[i][0] == '-' {
break
}
}
flag.CommandLine.Parse(os.Args[firstArgWithDash:])
我這樣做的原因是因為無論如何flag.Parse只是flag.CommandLine.Parse(os.Args[1:])在幕后打電話。
- 3 回答
- 0 關注
- 310 瀏覽
添加回答
舉報