Maison  >  Article  >  développement back-end  >  Golang - flag.Arg(0) renvoie l'index 1 au lieu de l'index 0 de l'argument passé par exec.cmd

Golang - flag.Arg(0) renvoie l'index 1 au lieu de l'index 0 de l'argument passé par exec.cmd

WBOY
WBOYavant
2024-02-10 14:39:08517parcourir

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

Golang est un langage de programmation rapide, efficace et fiable, et flag.Arg(0) est une fonction couramment utilisée dans Golang, qui est utilisée pour renvoyer l'index 1 du paramètre passé par exec.cmd. Cependant, l'éditeur PHP Zimo a souligné que le comportement de cette fonction n'est pas celui attendu et qu'elle renvoie en fait l'index 1 au lieu de l'index 0. Ce problème peut provoquer des erreurs dans le traitement des paramètres par le programme. Dans cet article, nous expliquerons la cause de ce problème et proposerons des solutions pour aider les développeurs à utiliser correctement la fonction flag.Arg(0).

Contenu de la question

J'ai du contenu dans mon barapplication actuelle qui ressemble à ceci

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

Maintenant, dans mon application foo, j'ai quelque chose comme ça

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
    }

Maintenant c.args ci-dessus = [1,2,3]

le programme foo essaie d'appeler le programme bar, la barre affiche 2 Comment afficher la colonne 1.

Je sais que flag.parse ignore le premier argument. Comment lire le premier argument (index 0) à l'aide de flag.arg() flag.parse 忽略第一个参数。如何使用 flag.arg() 读取第一个参数(索引 0)

解决方法

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

Workaround

cmd.args

Incluez le nom de la commande. flag.arg(0) est le premier argument après le nom de la commande et l'indicateur. 🎜 🎜Corrigé en ajoutant le nom de la commande à 🎜. 🎜
cmd := exec.Cmd{
    Path:   c.Path,
    Args:   append([]string{c.Path}, c.Args...),
    Env:    c.Env,
    Stdin:  bytes.NewReader(b),
    Stdout: &stdout,
    Stderr: &stderr,
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer