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

WBOY
Lepaskan: 2024-02-10 14:39:08
ke hadapan
517 orang telah melayarinya

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)
Salin selepas log masuk

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
    }
Salin selepas log masuk

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,
}
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!