Maison >développement back-end >Golang >Pouvez-vous spécifier des paramètres facultatifs pour les indicateurs dans Cobra ?
L'éditeur php Zimo a répondu : Oui, vous pouvez spécifier des paramètres facultatifs pour les drapeaux dans Cobra. Cobra est un puissant outil de ligne de commande permettant de créer des applications PHP élégantes. Vous pouvez spécifier des paramètres facultatifs pour une commande Cobra en ajoutant des crochets ([]) après le drapeau. Cela permet à l'utilisateur de fournir éventuellement des informations supplémentaires ou des options de configuration selon ses besoins. L'utilisation de paramètres facultatifs peut augmenter la flexibilité et l'adaptabilité du programme et offrir aux utilisateurs une meilleure expérience.
Supposons que j'ai ce drapeau dans mon programme et qu'il n'imprime que des nombres positifs :
c.PersistentFlags().IntVar(&SomeFlag, optionSomeFlag, 0, "做某事(范围: x-y)")
La valeur par défaut est 0, donc si l'utilisateur ne bascule pas le drapeau, rien ne sera imprimé. Comment faire en sorte qu'un indicateur accepte des paramètres mais ait lui-même une valeur par défaut ? c'est-à-dire si la valeur par défaut est 5
./program --someflag
输出将是 5
Mais si je le faisais
./program --someflag=1
输出将为 1
J'essaie de suivre le guide de l'utilisateur de Cobra et je m'attendais à avoir un type de commande qui me permettrait de spécifier une valeur par défaut uniquement lorsque l'utilisateur déclenche l'indicateur, plutôt que de simplement spécifier entièrement une valeur par défaut. J'ai peut-être mal compris ou raté quelque chose.
peut être effectuée en utilisant nooptdefval
rootcmd.persistentflags().lookup("someflag").nooptdefval = "5"
Dans le code ci-dessous, vous pouvez trouver un exemple complet d'application en ligne de commande avec cobra qui a le comportement que vous décrivez
package main import ( "fmt" "github.com/spf13/cobra" ) func main() { var someflag int var defaultsomeflag = "5" // create the root command. rootcmd := &cobra.command{ use: "program", short: "a brief description of your application", long: "a longer description of your application", run: func(cmd *cobra.command, args []string) { // check whether the flag was explicitly set. if cmd.flags().lookup("someflag").changed { fmt.printf("someflag: %d\n", someflag) } else { // if the flag was not explicitly set don't print a value. fmt.printf("someflag is not set\n") } }, } // define the flag and set its default value. rootcmd.persistentflags().intvar(&someflag, "someflag", 0, "do something (range: x-y)") rootcmd.persistentflags().lookup("someflag").nooptdefval = defaultsomeflag // execute the root command. if err := rootcmd.execute(); err != nil { fmt.println(err) } }
Voici les résultats d'exécution de différentes valeurs d'indicateur.
$ ./test someflag is not set $ ./test --someflag someflag: 5 $ ./test --someflag=3 someflag: 3
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!