Passer des arguments à un programme Go avec les flags
Go permet de se passer de Os.args pour la gestion des arguments à l’execution de l’application avec le package flag.
Les arguments créeront l’argument -h ou –help.
Pour les arguments de type bool, il faut mettre par défaut la valeur false, sinon l’argument sera toujours à true.
Voici un exemple de base, chaque argument est envoyé dans un pointeur vers l’argument:
packagemainimport (
"flag""log")
funcmain() {
// crée les variables qui contiendront les arguments
// attention: chaque paramètre est précédé d'un -
boolArg:=flag.Bool("b", false, "Argument de type booléen")
stringArg:=flag.String("s", "", "Argument de type chaine de caractères")
intArg:=flag.Int("i", 0, "Argument de type entier signé")
uintArg:=flag.Uint("u", 0, "Argument de type entier non signé")
floatArg:=flag.Float64("f", 0.0, "Argument de type nombre décimal")
// parse les arguments saisis
flag.Parse()
//flag.PrintDefaults() // permet d'afficher le message d'aide, équivaut à ./programme --help ou ./programme -h
log.Println("Nombre d'arguments: ", len(flag.Args()))
log.Println("boolArg value: ", *boolArg)
log.Println("stringArg value: ", *stringArg)
log.Println("intArg value: ", *intArg)
log.Println("uintArg value: ", *uintArg)
log.Println("floatArg value: ", *floatArg)
}
Il existe un autre moyen qui permet cette fois de récupérer directement les arguments dans des variables:
packagemainimport (
"flag""log")
funcmain() {
// crée les variables qui contiendront les arguments
varboolArgboolvarstringArgstringvarintArgintvaruintArguintvarfloatArgfloat64// attention: chaque paramètre est précédé d'un -
flag.BoolVar(&boolArg, "b", false, "Argument de type booléen")
flag.StringVar(&stringArg, "s", "", "Argument de type chaine de caractères")
flag.IntVar(&intArg, "i", 0, "Argument de type entier signé")
flag.UintVar(&uintArg, "u", 0, "Argument de type entier non signé")
flag.Float64Var(&floatArg, "f", 0.0, "Argument de type nombre décimal")
// parse les arguments saisis
flag.Parse()
//flag.PrintDefaults() // permet d'afficher le message d'aide, équivaut à ./programme --help ou ./programme -h
log.Println("Nombre d'arguments: ", len(flag.Args()))
log.Println("boolArg value: ", boolArg)
log.Println("stringArg value: ", stringArg)
log.Println("intArg value: ", intArg)
log.Println("uintArg value: ", uintArg)
log.Println("floatArg value: ", floatArg)
}