Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Golang - flag.Arg(0) mengembalikan indeks 1 dan bukannya indeks 0 argumen yang diluluskan oleh exec.cmd

Golang - flag.Arg(0) mengembalikan indeks 1 dan bukannya indeks 0 argumen yang diluluskan oleh exec.cmd

WBOY
WBOYke hadapan
2024-02-10 14:39:08519semak imbas

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

Golang ialah bahasa pengaturcaraan yang pantas, cekap dan boleh dipercayai serta bendera.Arg(0) ialah fungsi yang biasa digunakan dalam Golang, yang digunakan untuk mengembalikan indeks 1 parameter yang diluluskan oleh exec.cmd. Walau bagaimanapun, editor PHP Zimo menegaskan bahawa kelakuan fungsi ini tidak seperti yang diharapkan, dan ia sebenarnya mengembalikan indeks 1 dan bukannya indeks 0. Masalah ini boleh menyebabkan ralat dalam pemprosesan parameter oleh program. Dalam artikel ini, kami akan menerangkan punca masalah ini dan menyediakan penyelesaian untuk membantu pembangun menggunakan flag.Arg(0) berfungsi dengan betul.

Kandungan Soalan

Saya mempunyai beberapa kandungan dalam bar aplikasi semasa saya yang kelihatan seperti ini

flag.parse()
str := flag.arg(0)
fmt.println(str)

Kini dalam apl foo saya, saya mempunyai sesuatu seperti ini

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
    }

Sekarang c.args di atas = [1,2,3]

program foo cuba memanggil program bar, paparan bar 2 Cara membuat paparan lajur 1.

Saya tahu bahawa flag.parse mengabaikan hujah pertama. Cara membaca hujah pertama (indeks 0) menggunakan flag.arg() flag.parse 忽略第一个参数。如何使用 flag.arg() 读取第一个参数(索引 0)

解决方法

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

Penyelesaian

cmd.args

Sertakan nama arahan. flag.arg(0) ialah hujah pertama selepas nama perintah dan bendera. 🎜 🎜Dibetulkan dengan menambahkan nama arahan pada 🎜. 🎜
cmd := exec.Cmd{
    Path:   c.Path,
    Args:   append([]string{c.Path}, c.Args...),
    Env:    c.Env,
    Stdin:  bytes.NewReader(b),
    Stdout: &stdout,
    Stderr: &stderr,
}

Atas ialah kandungan terperinci Golang - flag.Arg(0) mengembalikan indeks 1 dan bukannya indeks 0 argumen yang diluluskan oleh exec.cmd. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam