Heim > Backend-Entwicklung > Golang > Golang – flag.Arg(0) gibt Index 1 des von exec.cmd übergebenen Arguments anstelle von Index 0 zurück

Golang – flag.Arg(0) gibt Index 1 des von exec.cmd übergebenen Arguments anstelle von Index 0 zurück

WBOY
Freigeben: 2024-02-10 14:39:08
nach vorne
568 Leute haben es durchsucht

Golang - flag.Arg(0) 返回 exec.cmd 传递的参数的索引 1 而不是索引 0

Golang ist eine schnelle, effiziente und zuverlässige Programmiersprache, und flag.Arg(0) ist eine häufig verwendete Funktion in Golang, die verwendet wird, um den Index 1 des von exec.cmd übergebenen Parameters zurückzugeben. Allerdings wies PHP-Redakteur Zimo darauf hin, dass das Verhalten dieser Funktion nicht wie erwartet sei und sie tatsächlich Index 1 statt Index 0 zurückgibt. Dieses Problem kann zu Fehlern bei der Verarbeitung von Parametern durch das Programm führen. In diesem Artikel erklären wir die Ursache dieses Problems und stellen Lösungen bereit, die Entwicklern helfen, die Funktion flag.Arg(0) korrekt zu verwenden.

Frageninhalt

Ich habe einige Inhalte in meiner aktuellen barApp, die so aussehen

flag.parse()
str := flag.arg(0)
fmt.println(str)
Nach dem Login kopieren

Jetzt habe ich in meiner Foo-App so etwas

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
    }
Nach dem Login kopieren

Jetzt c.args oben = [1,2,3]

foo-Programm versucht, das Bar-Programm aufzurufen, Bar zeigt 2 an So stellen Sie die Spaltenanzeige ein 1.

Ich weiß, dass flag.parse das erste Argument ignoriert. So lesen Sie das erste Argument (Index 0) mit flag.arg() flag.parse 忽略第一个参数。如何使用 flag.arg() 读取第一个参数(索引 0)

解决方法

cmd.args 包含命令名称。 flag.arg(0)

Workaround

cmd.args

Geben Sie den Befehlsnamen an. flag.arg(0) ist das erste Argument nach dem Befehlsnamen und dem Flag. 🎜 🎜Behoben durch Hinzufügen des Befehlsnamens zu 🎜. 🎜
cmd := exec.Cmd{
    Path:   c.Path,
    Args:   append([]string{c.Path}, c.Args...),
    Env:    c.Env,
    Stdin:  bytes.NewReader(b),
    Stdout: &stdout,
    Stderr: &stderr,
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonGolang – flag.Arg(0) gibt Index 1 des von exec.cmd übergebenen Arguments anstelle von Index 0 zurück. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage