Table des matières
什么是命令行参数
使用flag解析命令行参数
自定义命令行参数
总结
Que sont les paramètres de ligne de commande
Utiliser l'indicateur pour analyser les paramètres de ligne de commande
Paramètres de ligne de commande personnalisés
Résumé
Maison développement back-end Golang Comment utiliser les arguments de ligne de commande dans Go ?

Comment utiliser les arguments de ligne de commande dans Go ?

May 10, 2023 pm 07:03 PM
go语言 命令行参数 使用方法

Dans le langage Go, les paramètres de ligne de commande sont un moyen très important de transmettre des entrées au programme et de spécifier le comportement d'exécution. Go fournit une bibliothèque standard flag pour analyser les paramètres de ligne de commande. Cet article explique comment utiliser les paramètres de ligne de commande dans Go. flag来解析命令行参数,本文将介绍如何在Go中使用命令行参数。

什么是命令行参数

命令行参数是在程序运行时通过命令行传递给程序的参数,用于指定程序运行时的行为和输入。举个例子,Linux中的ls命令可以接受多个命令行参数,如-l用于列出详细信息,-a用于显示隐藏文件等。

在Go中,我们可以使用os.Args来获取程序运行时传递的所有命令行参数。os.Args是一个字符串切片,第一个元素是程序的名称,后面的元素是命令行参数。例如:

package main

import (
    "fmt"
    "os"
)

func main() {
    fmt.Println(os.Args)
}
Copier après la connexion

运行该程序,并传入两个参数helloworld

$ go run main.go hello world
Copier après la connexion

输出结果:

[/tmp/go-build3065006307/b001/exe/main hello world]
Copier après la connexion

可以看到,os.Args包含了程序的名称和两个命令行参数。

使用flag解析命令行参数

尽管我们可以通过os.Args获取到所有的命令行参数,但在实际的开发中,通常会使用更加灵活的方式来解析命令行参数。Go标准库提供了flag包来解析命令行参数。

flag包提供了三种类型的命令行参数:布尔型、字符串型和整型。可以通过flag.Bool()flag.String()flag.Int()分别定义这三种参数。

下面是一个简单的例子,定义了一个布尔型和一个字符串型命令行参数:

package main

import (
    "flag"
    "fmt"
)

func main() {
    // 定义命令行参数
    var (
        isVerbose bool
        name      string
    )
    flag.BoolVar(&isVerbose, "v", false, "verbose")
    flag.StringVar(&name, "name", "", "name of the user")

    // 解析命令行参数
    flag.Parse()

    // 输出命令行参数
    fmt.Printf("isVerbose=%v, name=%s
", isVerbose, name)
}
Copier après la connexion

在上面的例子中,我们使用flag.BoolVar()flag.StringVar()分别定义了一个布尔型和一个字符串型命令行参数。这两个函数共有四个参数:

  1. 用于存储命令行参数值的变量的地址;
  2. 命令行参数的名称,可以是一个单字符或多字符名称;
  3. 命令行参数的默认值;
  4. 命令行参数的描述信息。

在定义完命令行参数后,需要调用flag.Parse()函数解析命令行参数。

运行该程序,并传入-v-name="Alice"两个命令行参数:

$ go run main.go -v -name=Alice
Copier après la connexion

输出结果:

isVerbose=true, name=Alice
Copier après la connexion

我们可以看到,flag包可以很方便地解析命令行参数,并把值存储到对应的变量中。

自定义命令行参数

除了使用flag包提供的三种类型的命令行参数外,我们还可以自定义一些类型的命令行参数。

例如,我们可以定义一个下拉框类型的命令行参数,让用户从几个选项中选择一个:

package main

import (
    "fmt"

    "github.com/AlecAivazis/survey/v2"
)

func main() {
    // 定义下拉框选项
    options := []string{"red", "blue", "green"}

    // 定义命令行参数
    var color string
    prompt := &survey.Select{
        Message: "Pick a color:",
        Options: options,
    }
    survey.AskOne(prompt, &color)

    // 输出命令行参数
    fmt.Printf("color=%s
", color)
}
Copier après la connexion

在上面的例子中,我们使用第三方库github.com/AlecAivazis/survey/v2定义了一个下拉框选项。然后,使用survey.AskOne()函数显示下拉框并让用户选择。

运行该程序:

$ go run main.go
Copier après la connexion

输出结果:

? Pick a color: 
  ▸ red
    blue
    green
  Answer: red
color=red
Copier après la connexion

我们可以看到,用户可以从几个选项中选择一个颜色,并把选择的值存储到color变量中。

总结

本文介绍了如何在Go中使用命令行参数。我们可以使用os.Args获取所有命令行参数,也可以使用flag

Que sont les paramètres de ligne de commande

Les paramètres de ligne de commande sont des paramètres transmis au programme via la ligne de commande lorsque le programme est en cours d'exécution. Ils sont utilisés pour spécifier le comportement et l'entrée du programme lorsqu'il est en cours d'exécution. Par exemple, la commande ls sous Linux peut accepter plusieurs paramètres de ligne de commande, tels que -l pour lister des informations détaillées, -a utilisé pour afficher fichiers cachés, etc. 🎜🎜Dans Go, nous pouvons utiliser os.Args pour obtenir tous les paramètres de ligne de commande transmis lors de l'exécution du programme. os.Args est une tranche de chaîne, le premier élément est le nom du programme et les éléments suivants sont les paramètres de ligne de commande. Par exemple : 🎜rrreee🎜Exécutez le programme et transmettez les deux paramètres hello et world : 🎜rrreee🎜Résultat de sortie : 🎜rrreee🎜Vous pouvez voir, os .Argscontient le nom du programme et deux arguments de ligne de commande. 🎜

Utiliser l'indicateur pour analyser les paramètres de ligne de commande

🎜Bien que nous puissions obtenir tous les paramètres de ligne de commande via os.Args, dans le développement actuel, des méthodes plus flexibles sont généralement utilisées pour analyser la commande. paramètres de ligne. La bibliothèque standard Go fournit le package flag pour analyser les paramètres de ligne de commande. 🎜🎜Le package flag fournit trois types de paramètres de ligne de commande : booléen, chaîne et entier. Ces trois paramètres peuvent être définis respectivement via flag.Bool(), flag.String() et flag.Int(). 🎜🎜Ce qui suit est un exemple simple qui définit un paramètre de ligne de commande booléen et chaîne : 🎜rrreee🎜Dans l'exemple ci-dessus, nous utilisons flag.BoolVar() et flag.StringVar() définit respectivement un paramètre de ligne de commande booléen et une chaîne. Ces deux fonctions ont un total de quatre paramètres : 🎜
  1. L'adresse de la variable utilisée pour stocker la valeur du paramètre de ligne de commande
  2. Le nom du paramètre de ligne de commande, qui peut être un Nom à un seul caractère ou à plusieurs caractères ;
  3. Valeurs par défaut des paramètres de ligne de commande;
  4. Informations de description des paramètres de ligne de commande.
🎜Après avoir défini les paramètres de ligne de commande, vous devez appeler la fonction flag.Parse() pour analyser les paramètres de ligne de commande. 🎜🎜Exécutez le programme et transmettez les deux paramètres de ligne de commande -v et -name="Alice" : 🎜rrreee🎜Résultat de sortie : 🎜rrreee🎜Nous pouvons voir Oui , le package flag peut facilement analyser les paramètres de ligne de commande et stocker les valeurs dans les variables correspondantes. 🎜

Paramètres de ligne de commande personnalisés

🎜En plus d'utiliser les trois types de paramètres de ligne de commande fournis par le package flag, nous pouvons également personnaliser certains types de paramètres de ligne de commande. 🎜🎜Par exemple, nous pouvons définir un paramètre de ligne de commande de type liste déroulante pour permettre à l'utilisateur de choisir une parmi plusieurs options : 🎜rrreee🎜Dans l'exemple ci-dessus, nous utilisons la bibliothèque tierce github.com/AlecAivazis /survey /v2 définit une option de liste déroulante. Ensuite, utilisez la fonction survey.AskOne() pour afficher la liste déroulante et laisser l'utilisateur sélectionner. 🎜🎜Exécutez le programme : 🎜rrreee🎜Résultat de sortie : 🎜rrreee🎜Nous pouvons voir que l'utilisateur peut sélectionner une couleur parmi plusieurs options et stocker la valeur sélectionnée dans la variable color. 🎜

Résumé

🎜Cet article explique comment utiliser les paramètres de ligne de commande dans Go. Nous pouvons utiliser os.Args pour obtenir tous les paramètres de ligne de commande, ou nous pouvons utiliser le package flag ou une méthode personnalisée pour analyser les paramètres de ligne de commande. L'utilisation de paramètres de ligne de commande peut rendre nos programmes plus flexibles et plus faciles à utiliser, et constitue également une compétence nécessaire pour écrire des outils de ligne de commande de haute qualité. 🎜

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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Commandes de chat et comment les utiliser
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Apr 02, 2025 pm 02:06 PM

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Apr 02, 2025 pm 02:03 PM

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Apr 02, 2025 pm 05:09 PM

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Lorsque vous utilisez Goland pour le développement du langage GO, de nombreux développeurs rencontreront des balises de structure personnalisées ...

Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Apr 02, 2025 pm 04:54 PM

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Apr 02, 2025 pm 04:12 PM

Quelles bibliothèques de GO sont développées par de grandes entreprises ou des projets open source bien connus? Lors de la programmation en Go, les développeurs rencontrent souvent des besoins communs, ...

Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Apr 02, 2025 pm 12:57 PM

Deux façons de définir les structures dans le langage GO: la différence entre les mots clés VAR et le type. Lorsque vous définissez des structures, GO Language voit souvent deux façons d'écrire différentes: d'abord ...

Pourquoi est-il nécessaire de passer des pointeurs lors de l'utilisation de bibliothèques Go et Viper? Pourquoi est-il nécessaire de passer des pointeurs lors de l'utilisation de bibliothèques Go et Viper? Apr 02, 2025 pm 04:00 PM

GO POINTER SYNTAXE ET ATTENDRE DES PROBLÈMES DANS LA BIBLIOTHÈQUE VIPER Lors de la programmation en langage Go, il est crucial de comprendre la syntaxe et l'utilisation des pointeurs, en particulier dans ...

See all articles