Defining Independent FlagSets in GoLang
The FlagSet type in GoLang empowers developers to define distinct sets of flags. This feature proves particularly useful when implementing subcommands in a command-line interface. However, the question arises: how can we effectively achieve this separation?
Independent FlagSets in Practice
To establish autonomous FlagSets, it's crucial to distinguish between subcommands and subsequently invoke Parse on the corresponding FlagSet. Consider the following enhanced example:
f1 := flag.NewFlagSet("f1", flag.ContinueOnError) silent := f1.Bool("silent", false, "") f2 := flag.NewFlagSet("f2", flag.ContinueOnError) loud := f2.Bool("loud", false, "") switch os.Args[1] { case "apply": if err := f1.Parse(os.Args[2:]); err == nil { fmt.Println("apply", *silent) } case "reset": if err := f2.Parse(os.Args[2:]); err == nil { fmt.Println("reset", *loud) } }
In this code, we define two FlagSets, one for the apply command and another for the reset command. The switch statement identifies the subcommand and invokes Parse on the designated FlagSet, effectively isolating the flags for each command.
The above is the detailed content of How to Define and Use Independent FlagSets in Go for Subcommands?. For more information, please follow other related articles on the PHP Chinese website!