Arguments et flags#
Comprendre les arguments de la ligne de commande#
- Les arguments de ligne de commande sont les valeurs que vous fournissez à un programme lors de son exécution dans un terminal ou une invite de commande.
- Dans Go, vous pouvez accéder aux arguments de la ligne de commande via le slice
os.Args
de la bibliothèque standard.os.Args[0]
est le nom du programme lui-même,os.Args[1]
est le premier argument,os.Args[2]
est le second, et ainsi de suite. - Exemple de code :
package main import ( "fmt" "os" ) func main() { fmt.Println("Arguments: ", os.Args) }
- Pour exécuter ce programme avec des arguments, vous utiliseriez une commande similaire à
go run main.go arg1 arg2
.
Utilisation du package flag pour parser les arguments#
- Le package
flag
de Go fournit une interface plus sophistiquée pour analyser les arguments de la ligne de commande. - Il peut être utilisé pour définir et gérer les options de ligne de commande qui ont un nom (aussi appelées "flags").
- Exemple de code :
package main import ( "flag" "fmt" ) func main() { name := flag.String("name", "anonymous", "Specify your name") flag.Parse() fmt.Printf("Hello, %s!\n", *name) }
- Dans cet exemple, un flag nommé
name
est défini avec une valeur par défaut de "anonymous" et une courte description. Lors de l'exécution du programme, vous pouvez spécifier ce flag avecgo run main.go -name=John
.
Gestion des arguments optionnels et obligatoires#
- Les flags sont généralement optionnels dans Go, mais vous pouvez ajouter une vérification manuelle pour rendre certains flags obligatoires.
- Exemple de code :
package main import ( "flag" "fmt" "os" ) func main() { name := flag.String("name", "", "Specify your name") flag.Parse() if *name == "" { fmt.Println("Error: name is required") flag.PrintDefaults() os.Exit(2) } fmt.Printf("Hello, %s!\n", *name) }
- Dans cet exemple, si le flag
name
n'est pas spécifié lors de l'exécution du programme, une erreur sera affichée et le programme se terminera. Pour rendre un flag obligatoire, vous pouvez le définir sans valeur par défaut et vérifier sa valeur après l'appel àflag.Parse()
.