Maison > développement back-end > Golang > le corps du texte

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

WBOY
Libérer: 2024-02-10 14:39:08
avant
514 Les gens l'ont consulté

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)
Copier après la connexion

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
    }
Copier après la connexion

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,
}
Copier après la connexion

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!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!