Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.

License

NotificationsYou must be signed in to change notification settings

ogier/pflag

Repository files navigation

Build Status

Description

pflag is a drop-in replacement for Go's flag package, implementingPOSIX/GNU-style --flags.

pflag is compatible with theGNU extensions to the POSIX recommendationsfor command-line options. For a more precise description, see the"Command-line flag syntax" section below.

pflag is available under the same style of BSD license as the Go language,which can be found in the LICENSE file.

Installation

pflag is available using the standardgo get command.

Install by running:

go get github.com/ogier/pflag

Run tests by running:

go test github.com/ogier/pflag

Usage

pflag is a drop-in replacement of Go's native flag package. If you importpflag under the name "flag" then all code should continue to functionwith no changes.

import flag"github.com/ogier/pflag"

There is one exception to this: if you directly instantiate the Flag structthere is one more field "Shorthand" that you will need to set.Most code never instantiates this struct directly, and instead usesfunctions such as String(), BoolVar(), and Var(), and is thereforeunaffected.

Define flags using flag.String(), Bool(), Int(), etc.

This declares an integer flag, -flagname, stored in the pointer ip, with type *int.

varip*int=flag.Int("flagname",1234,"help message for flagname")

If you like, you can bind the flag to a variable using the Var() functions.

varflagvarintfuncinit() {flag.IntVar(&flagvar,"flagname",1234,"help message for flagname")}

Or you can create custom flags that satisfy the Value interface (withpointer receivers) and couple them to flag parsing by

flag.Var(&flagVal,"name","help message for flagname")

For such flags, the default value is just the initial value of the variable.

After all flags are defined, call

flag.Parse()

to parse the command line into the defined flags.

Flags may then be used directly. If you're using the flags themselves,they are all pointers; if you bind to variables, they're values.

fmt.Println("ip has value ",*ip)fmt.Println("flagvar has value ",flagvar)

After parsing, the arguments after the flag are available as theslice flag.Args() or individually as flag.Arg(i).The arguments are indexed from 0 through flag.NArg()-1.

The pflag package also defines some new functions that are not in flag,that give one-letter shorthands for flags. You can use these by appending'P' to the name of any function that defines a flag.

varip=flag.IntP("flagname","f",1234,"help message")varflagvarboolfuncinit() {flag.BoolVarP("boolname","b",true,"help message")}flag.VarP(&flagVar,"varname","v",1234,"help message")

Shorthand letters can be used with single dashes on the command line.Boolean shorthand flags can be combined with other shorthand flags.

The default set of command-line flags is controlled bytop-level functions. The FlagSet type allows one to defineindependent sets of flags, such as to implement subcommandsin a command-line interface. The methods of FlagSet areanalogous to the top-level functions for the command-lineflag set.

Command line flag syntax

--flag    // boolean flags only--flag=x

Unlike the flag package, a single dash before an option means somethingdifferent than a double dash. Single dashes signify a series of shorthandletters for flags. All but the last shorthand letter must be boolean flags.

// boolean flags-f-abc// non-boolean flags-n 1234-Ifile// mixed-abcs "hello"-abcn1234

Flag parsing stops after the terminator "--". Unlike the flag package,flags can be interspersed with arguments anywhere on the command linebefore this terminator.

Integer flags accept 1234, 0664, 0x1234 and may be negative.Boolean flags (in their long form) accept 1, 0, t, f, true, false,TRUE, FALSE, True, False.Duration flags accept any input valid for time.ParseDuration.

More info

You can see the full reference documentation of the pflag packageat godoc.org, or through go's standard documentation system byrunninggodoc -http=:6060 and browsing tohttp://localhost:6060/pkg/github.com/ogier/pflag afterinstallation.

About

Drop-in replacement for Go's flag package, implementing POSIX/GNU-style --flags.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp