OS Args Golang

OS Args Golang
Si vous avez déjà utilisé un utilitaire de ligne de commande, vous savez qu'il y a une chose qu'ils ont tous en commun. Ils acceptent tous des arguments en ligne de commandement.

Les arguments sont l'un des meilleurs moyens de créer des paramètres pour les programmes pendant l'exécution. Par exemple, lorsque vous exécutez la commande go run, vous spécifiez également le nom du fichier que vous souhaitez compiler. Ici, l'exécution et le nom du fichier sont des arguments en ligne de commande qui indiquent au compilateur Go quoi faire.

Ce guide vous guidera à travers la création d'arguments pour vos programmes GO.

Package Golang OS

Pour utiliser des arguments en ligne de commande dans notre programme, nous devons importer le package OS. Ce package contient le système d'exploitation.Variable args qui contient des arguments en ligne de commande

Cette variable est un éventail de chaînes et maintient les arguments transmis au programme. Gardez à l'esprit que le premier argument est en fait le nom du programme.

Par exemple:

package principal
importer (
"FMT"
"OS"
)
funcmain ()
pg_name: = os.Args [0]
fmt.Println (pg_name)

Dans l'exemple ci-dessus, nous utilisons le système d'exploitation.Args Array pour récupérer le premier argument (index 0). Étant donné que le premier argument est le nom du programme basé au compilateur GO, la sortie résultante est la voie complète vers l'exécutable du programme.

$ va exécuter os_args.aller
C: \ Users \ CSALEM \ AppData \ Local \ Temp \ Go-Build3770603401 \ B001 \ EXE \ OS_ARGS.exe
Golang obtient le nombre d'arguments

Golang obtient le nombre d'arguments

Nous pouvons obtenir le nombre d'arguments transmis à un programme en utilisant la fonction Len (). Depuis le système d'exploitation.Args est simplement un tableau, la fonction LEN renverra le nombre d'éléments dans le tableau.

Un exemple de programme est comme indiqué ci-dessous:

packagemain
importer (
"FMT"
"OS"
)
funcmain ()
Arg_len: = Len (OS.Args [1:])
fmt.Println ("Longueur d'argument:", arg_len)

Si nous exécutons le code ci-dessus avec un certain nombre d'arguments en ligne de commande:

$ va exécuter os_args.Allez d'abord, deuxième, troisième

Nous devons faire passer le nombre total d'arguments au programme

Longueur de l'argument: 3

Remarque: Puisque nous savons que le premier argument est le nom du programme, nous utilisons le découpage du tableau pour supprimer le premier élément et saisir tous les autres arguments après l'index 0.

Drapeaux de ligne de commande de Golang

Nous pouvons définir nos propres drapeaux personnalisés en utilisant le package de drapeaux. Un exemple de drapeau de ligne de commande serait -h, -l ou autre.

Par exemple, l'utilitaire CMD MySQL vous permet de spécifier le nom d'utilisateur et le mot de passe à l'aide de la commande:

mysql -u root -p

Implémentez un programme simple qui fonctionne comme une invite de connexion.

package principal
importer (
"drapeau"
"FMT"
)
funcmain ()
String de nom d'utilisateur var
chaîne de mot de passe var
drapeau.Stringvar (& username, "u", "root", "nom d'utilisateur par défaut: root")
drapeau.Stringvar (& mot de passe, "p", "mysql", "mot de passe par défaut: mysql")
Si username == "root" && mot de passe == "MySQL"
fmt.Println ("mysql>")
autre
fmt.Println ("Une erreur a été produite.")

Le programme simple ci-dessus utilise l'indicateur -u et -p pour vérifier si le nom d'utilisateur et le mot de passe fournis correspondent. S'il est correct, nous affichons une invite «MySQL» et autrement, renvoyez un message.

Une fois que nous avons construit le programme:

aller construire cmd_flag.aller

Nous pouvons courir avec les arguments comme

./ cmd_flags.exe -u root -p mysql

Cela devrait renvoyer le message dans le bloc IF comme indiqué:

$ ./ drapeaux.exe -u root -p mysql
Mysql

Sinon, la commande doit renvoyer le message dans le bloc Else.

Conclusion

Dans cet article, nous avons couvert les bases du travail des arguments en ligne de commandement en utilisant le package OS. Nous avons également couvert comment utiliser les drapeaux de ligne de commande à partir du package de drapeaux.

Merci d'avoir lu!!