Golang是一種快速、有效率、可靠的程式語言,而flag.Arg(0)是Golang中常用的函數,用來傳回exec.cmd傳遞的參數的索引1。然而,php小編子墨指出,這個函數的行為與預期不符,實際上它回傳的是索引1而不是索引0。這個問題可能導致程式在處理參數時出現錯誤。在本文中,我們將解釋這個問題的原因,並提供解決方案,幫助開發者正確使用flag.Arg(0)函數。
我目前的 bar
應用程式中有一些看起來像這樣的內容
flag.parse() str := flag.arg(0) fmt.println(str)
現在在我的 foo 應用程式中我有這樣的東西
var stdout, stderr bytes.Buffer cmd := exec.Cmd{ Path: c.Path, Args: c.Args, Env: c.Env, Stdin: bytes.NewReader(b), Stdout: &stdout, Stderr: &stderr, } if err := cmd.Start(); err != nil { return err }
現在上面的c.args = [1,2,3]
foo 程式嘗試呼叫 bar 程序,bar 顯示 2 如何讓欄顯示 1。
我知道 flag.parse
忽略第一個參數。如何使用 flag.arg() 讀取第一個參數(索引 0)
#cmd.args
包含指令名稱。 flag.arg(0)
是指令名稱和標誌之後的第一個參數。
透過將命令名稱新增至 cmd.args
來修復。
cmd := exec.Cmd{ Path: c.Path, Args: append([]string{c.Path}, c.Args...), Env: c.Env, Stdin: bytes.NewReader(b), Stdout: &stdout, Stderr: &stderr, }
以上是Golang - flag.Arg(0) 傳回 exec.cmd 傳遞的參數的索引 1 而不是索引 0的詳細內容。更多資訊請關注PHP中文網其他相關文章!