Question
Quelqu'un peut-il expliquer les drapeaux dans Go?
flag.Parse()
var omitNewline = flag.Bool("n", false, "don't print final newline")
La solution
Voir http://golang.org/pkg/flag/ pour une description complète.
Les arguments pour flag.Bool sont (chaîne de nom, bool valeur, chaîne d'utilisation)
nom est l'argument de rechercher, la valeur est la valeur par défaut et utilisation décrit le but du drapeau pour un argument -help ou similaire, et est affiché avec flag.Usage ().
Autres conseils
flag
est utilisée pour analyser les arguments de ligne de commande. Si vous passez « -n » comme argument de ligne de commande, omitNewLine sera définie sur true. Il est expliqué un peu plus loin dans le tutoriel:
Après avoir importé le paquet de drapeau, la ligne 12 crée une variable globale pour maintenir la valeur du drapeau -n de l'écho. La omitNewline variable a le type * bool, pointeur vers bool.
drapeaux sont un moyen commun pour définir les options pour les programmes de ligne de commande.
package main
import (
"flag"
"fmt"
)
var (
env *string
port *int
)
// Basic flag declarations are available for string, integer, and boolean options.
func init() {
env = flag.String("env", "development", "a string")
port = flag.Int("port", 3000, "an int")
}
func main() {
// Once all flags are declared, call flag.Parse() to execute the command-line parsing.
flag.Parse()
// Here we’ll just dump out the parsed options and any trailing positional
// arguments. Note that we need to dereference the points with e.g. *evn to
// get the actual option values.
fmt.Println("env:", *env)
fmt.Println("port:", *port)
}
Exécuter les programmes:
go run main.go
Essayez le programme d'exécution en donnant d'abord sans drapeaux. Notez que si vous omettez drapeaux ils prennent automatiquement leurs valeurs par défaut.
go run command-line-flags.go --env production --port 2000
Si vous fournissez un drapeau avec une valeur spécifiée, par défaut écrasera par un passé.