Go
Analyse des arguments et des drapeaux de ligne de commande
Recherche…
Arguments de ligne de commande
L'argument d'analyse de ligne de commande est Go est très similaire aux autres langages. Dans votre code, vous accédez simplement à la partie des arguments où le premier argument sera le nom du programme lui-même.
Exemple rapide:
package main
import (
"fmt"
"os"
)
func main() {
progName := os.Args[0]
arguments := os.Args[1:]
fmt.Printf("Here we have program '%s' launched with following flags: ", progName)
for _, arg := range arguments {
fmt.Printf("%s ", arg)
}
fmt.Println("")
}
Et la sortie serait:
$ ./cmd test_arg1 test_arg2
Here we have program './cmd' launched with following flags: test_arg1 test_arg2
Chaque argument est juste une chaîne. Dans le paquetage os
, il ressemble à var Args []string
: var Args []string
Les drapeaux
Aller bibliothèque standard fournit un flag
package qui aide à analyser les indicateurs transmis au programme.
Notez que le package d’ flag
ne fournit pas d’ flag
habituels de style GNU. Cela signifie que les indicateurs à plusieurs lettres doivent être lancés avec un tiret unique comme ceci: -exampleflag
, pas ceci: --exampleflag
. Les drapeaux de type GNU peuvent être utilisés avec un paquetage tiers.
package main
import (
"flag"
"fmt"
)
func main() {
// basic flag can be defined like this:
stringFlag := flag.String("string.flag", "default value", "here comes usage")
// after that stringFlag variable will become a pointer to flag value
// if you need to store value in variable, not pointer, than you can
// do it like:
var intFlag int
flag.IntVar(&intFlag, "int.flag", 1, "usage of intFlag")
// after all flag definitions you must call
flag.Parse()
// then we can access our values
fmt.Printf("Value of stringFlag is: %s\n", *stringFlag)
fmt.Printf("Value of intFlag is: %d\n", intFlag)
}
flag
aide le message pour nous:
$ ./flags -h
Usage of ./flags:
-int.flag int
usage of intFlag (default 1)
-string.flag string
here comes usage (default "default value")
Appel avec tous les drapeaux:
$ ./flags -string.flag test -int.flag 24
Value of stringFlag is: test
Value of intFlag is: 24
Appel avec des drapeaux manquants:
$ ./flags
Value of stringFlag is: default value
Value of intFlag is: 1