CommandLine は os.Args から解析されるコマンドラインフラグのデフォルトセットです。 BoolVar, Arg などの最上位関数は, CommandLine のメソッドのラッパーです。
var CommandLine = NewFlagSet(os.Args[0], ExitOnError)
ErrHelp は, -help または -h フラグが呼び出されたがそのようなフラグが定義されていない場合に返されるエラーです。
var ErrHelp = errors.New("flag: help requested")
Usage は,定義されているすべてのコマンドラインフラグをコマンドラインの出力に記録した使用法メッセージを出力します。 デフォルトでは os.Stderr です。 フラグの解析中にエラーが発生したときに呼び出されます。 関数は,カスタム関数を指すように変更できる変数です。 デフォルトでは単純なヘッダを表示して PrintDefaults を呼び出します。 出力形式とその制御方法についての詳細は, PrintDefaults のマニュアルを参照してください。 カスタムの Usage 関数はプログラムを終了することを選択するかもしれません。 デフォルトでは,コマンドラインのエラー処理方法が ExitOnError に設定されているため,終了します。
var Usage = func() { fmt.Fprintf(CommandLine.Output(), "Usage of %s:\n", os.Args[0]) PrintDefaults() }
func Arg(i int) string
Arg は i 番目のコマンドライン引数を返します。 Arg(0) は,フラグが処理された後の最初の残りの引数です。 リクエストされた要素が存在しない場合, Arg は空の文字列を返します。
func Args() []string
Args は,フラグなしのコマンドライン引数を返します。
func Bool(name string, value bool, usage string) *bool
Bool は,指定された名前,デフォルト値,および使用法の文字列を使って bool フラグを定義します。 戻り値は,フラグの値を格納するブール変数のアドレスです。
func BoolVar(p *bool, name string, value bool, usage string)
BoolVar は,指定された名前,デフォルト値,および使用法の文字列を使用して bool フラグを定義します。 引数 p は,フラグの値を格納するブール変数を指します。
func Duration(name string, value time.Duration, usage string) *time.Duration
Duration は,指定された名前,デフォルト値,および使用方法の文字列を使用して time.Duration フラグを定義します。 戻り値は,フラグの値を格納する time.Duration 変数のアドレスです。 フラグは time.ParseDuration が受け入れる値を受け入れます。
func DurationVar(p *time.Duration, name string, value time.Duration, usage string)
DurationVar は,指定された名前,デフォルト値,および使用方法の文字列を使用して time.Duration フラグを定義します。 引数 p は,フラグの値を格納する time.Duration 変数を指します。 フラグは time.ParseDuration が受け入れる値を受け入れます。
func Float64(name string, value float64, usage string) *float64
Float64 は,指定された名前,デフォルト値,および使用法の文字列を使用して float64 フラグを定義します。 戻り値は,フラグの値を格納する float64 変数のアドレスです。
func Float64Var(p *float64, name string, value float64, usage string)
Float64Var は,指定された名前,デフォルト値,および使用法の文字列を使用して float64 フラグを定義します。 引数 p は,フラグの値を格納するための float64 変数を指します。
func Int(name string, value int, usage string) *int
Int は,指定された名前,デフォルト値,および使用方法の文字列を使用して int フラグを定義します。 戻り値は,フラグの値を格納する int 型変数のアドレスです。
func Int64(name string, value int64, usage string) *int64
Int64 は,指定された名前,デフォルト値,および使用方法の文字列を使用して int64 フラグを定義します。 戻り値は,フラグの値を格納する int64 変数のアドレスです。
func Int64Var(p *int64, name string, value int64, usage string)
Int64Var は,指定された名前,デフォルト値,および使用方法の文字列を使用して int64 フラグを定義します。 引数 p は,フラグの値を格納する int64 変数を指します。
func IntVar(p *int, name string, value int, usage string)
IntVar は,指定された名前,デフォルト値,および使用法の文字列を使用して int フラグを定義します。 引数 p は,フラグの値を格納するための int 変数を指します。
func NArg() int
NArg は,フラグが処理された後に残っている引数の数です。
func NFlag() int
NFlag は,設定されているコマンドラインフラグの数を返します。
func Parse()
Parse は os.Args[1:] からのコマンドラインフラグを解析します。 すべてのフラグが定義された後で,プログラムがフラグにアクセスする前に呼び出す必要があります。
func Parsed() bool
Parsed は,コマンドラインフラグが解析されたかどうかを報告します。
func PrintDefaults()
PrintDefaults は,定義されているすべてのコマンドラインフラグのデフォルト設定を示す使用方法メッセージを標準エラー (特に設定されていない限り) に出力します。 整数値のフラグ x の場合,デフォルトの出力は次の形式になります。
-x int x 用の使用法メッセージ (デフォルト 7)
使用法メッセージは, 1 バイトの名前を持つブールフラグ以外のものについては別の行に表示されます。 bool フラグの場合,型は省略され,フラグ名が 1 バイトの場合,使用法メッセージは同じ行に表示されます。 デフォルトが型のゼロ値である場合,括弧内のデフォルトは省略されます。 リストされている型 (ここでは int) は,フラグの使用法の文字列に逆引用符で囲まれた名前を入れることによって変更できます。 メッセージ内のそのような最初の項目はメッセージ内に表示されるパラメータ名と見なされ,バッククォートは表示されるときにメッセージから削除されます。 たとえば,
flag.String("I", "", "search `directory` for include files")
の出力は以下となります。
-I directory search directory for include files.
フラグメッセージの送信先を変更するには, CommandLine.SetOutput を呼び出します。
func Set(name, value string) error
Set は,名前付きコマンドラインフラグの値を設定します。
func String(name string, value string, usage string) *string
String は,指定された名前,デフォルト値,および使用法の文字列を使用して文字列フラグを定義します。 戻り値は,フラグの値を格納する文字列変数のアドレスです。
func StringVar(p *string, name string, value string, usage string)
StringVar は,指定された名前,デフォルト値,および使用法の文字列を使用して文字列フラグを定義します。 引数 p は,フラグの値を格納する文字列変数を指します。
func Uint(name string, value uint, usage string) *uint
Uint は,指定された名前,デフォルト値,および使用法の文字列を使用して uint フラグを定義します。 戻り値は,フラグの値を格納する uint 変数のアドレスです。
func Uint64(name string, value uint64, usage string) *uint64
Uint64 は,指定された名前,デフォルト値,および使用法の文字列を使用して uint64 フラグを定義します。 戻り値は,フラグの値を格納する uint64 変数のアドレスです。
func Uint64Var(p *uint64, name string, value uint64, usage string)
Uint64Var は,指定された名前,デフォルト値,および使用方法の文字列を使用して uint64 フラグを定義します。 引数 p は,フラグの値を格納するための uint64 変数を指しています。
func UintVar(p *uint, name string, value uint, usage string)
UintVar は,指定された名前,デフォルト値,および使用法の文字列を使用して uint フラグを定義します。 引数 p は,フラグの値を格納するための uint 変数を指します。
func UnquoteUsage(flag *Flag) (name string, usage string)
UnquoteUsage は,フラグの使用法文字列から逆引用符付きの名前を抽出し,名前と引用符で囲まれていない使用法を返します。 たとえば,"a `name` to show" の場合,("name", "a name to show") を返します。 バッククォートがない場合,名前はフラグの値の型に基づく名前,またはフラグがブール値の場合は空の文字列です。
func Var(value Value, name string, usage string)
Var は,指定された名前と使用方法の文字列を使用してフラグを定義します。 フラグの型と値は Value 型の最初の引数で表され,通常は Value のユーザー定義の実装を保持します。 たとえば,呼び出し側は,スライスに Value のメソッドを渡すことによって,コンマ区切りの文字列を文字列のスライスに変換するフラグを作成できます。 特に, Set はコンマ区切りの文字列をスライスに分解します。
func Visit(fn func(*Flag))
Visit は,コマンド行フラグを辞書式の順序で訪問し,それぞれに対して fn を呼び出します。 設定されているフラグのみを訪問します。
func VisitAll(fn func(*Flag))
VisitAll は辞書式順にコマンドラインフラグを訪問し,それぞれに対して fn を呼び出します。 設定されていないものも含め,すべてのフラグを訪問します。
ErrorHandling は,解析が失敗した場合の FlagSet.Parse の動作を定義します。
type ErrorHandling int
これらの定数により,解析が失敗した場合, FlagSet.Parse は説明どおりに動作します。
const ( ContinueOnError ErrorHandling = iota // 説明的なエラーを返します。 ExitOnError // os.Exit(2) を呼び出します。 PanicOnError // 説明的なエラーでパニックを呼び出します。 )
フラグはフラグの状態を表します。
type Flag struct { Name string // コマンドラインに表示される名前 Usage string // ヘルプメッセージ Value Value // 設定値 DefValue string // デフォルト値 (テキストとして) 。使用法メッセージ }
func Lookup(name string) *Flag
Lookup は指定されたコマンドラインフラグの Flag 構造体を返し,存在しない場合は nil を返します。
FlagSet は,定義済みフラグのセットを表します。 FlagSet のゼロ値には名前がなく, ContinueOnError エラー処理があります。
type FlagSet struct { // Usage は,フラグの解析中にエラーが発生したときに呼び出される関数です。 // このフィールドは関数であり (メソッドではありません) ,カスタムエラーハンドラを指すように変更できます。 // Usage が呼び出された後に起こることは ErrorHandling 設定に依存します。 // コマンドラインの場合,これはデフォルトで ExitOnError になり, Usage を呼び出した後にプログラムを終了します。 Usage func() // エクスポートされていないフィールドがあります }
func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet
NewFlagSet は,指定された名前とエラー処理プロパティを使用して,新しい空のフラグセットを返します。 名前が空でない場合は,デフォルトの使用法メッセージとエラーメッセージに表示されます。
func (f *FlagSet) Arg(i int) string
Arg は i 番目の引数を返します。 Arg(0) は,フラグが処理された後の最初の残りの引数です。 リクエストされた要素が存在しない場合, Arg は空の文字列を返します。
func (f *FlagSet) Args() []string
Args は,フラグ以外の引数を返します。
func (f *FlagSet) Bool(name string, value bool, usage string) *bool
Bool は,指定された名前,デフォルト値,および使用法の文字列を使って bool フラグを定義します。 戻り値は,フラグの値を格納するブール変数のアドレスです。
func (f *FlagSet) BoolVar(p *bool, name string, value bool, usage string)
BoolVar は,指定された名前,デフォルト値,および使用法の文字列を使用して bool フラグを定義します。 引数 p は,フラグの値を格納するブール変数を指します。
func (f *FlagSet) Duration(name string, value time.Duration, usage string) *time.Duration
Duration は,指定された名前,デフォルト値,および使用方法の文字列を使用して time.Duration フラグを定義します。 戻り値は,フラグの値を格納する time.Duration 変数のアドレスです。 フラグは time.ParseDuration が受け入れる値を受け入れます。
func (f *FlagSet) DurationVar(p *time.Duration, name string, value time.Duration, usage string)
DurationVar は,指定された名前,デフォルト値,および使用方法の文字列を使用して time.Duration フラグを定義します。 引数 p は,フラグの値を格納する time.Duration 変数を指します。 フラグは time.ParseDuration が受け入れる値を受け入れます。
func (f *FlagSet) ErrorHandling() ErrorHandling
ErrorHandling は,フラグセットのエラー処理動作を返します。
func (f *FlagSet) Float64(name string, value float64, usage string) *float64
Float64 は,指定された名前,デフォルト値,および使用法の文字列を使用して float64 フラグを定義します。 戻り値は,フラグの値を格納する float64 変数のアドレスです。
func (f *FlagSet) Float64Var(p *float64, name string, value float64, usage string)
Float64Var は,指定された名前,デフォルト値,および使用法の文字列を使用して float64 フラグを定義します。 引数 p は,フラグの値を格納するための float64 変数を指します。
func (f *FlagSet) Init(name string, errorHandling ErrorHandling)
Init は,フラグセットの名前とエラー処理プロパティを設定します。 デフォルトでは,ゼロ FlagSet は空の名前と ContinueOnError エラー処理ポリシーを使用します。
func (f *FlagSet) Int(name string, value int, usage string) *int
Int は,指定された名前,デフォルト値,および使用方法の文字列を使用して int フラグを定義します。 戻り値は,フラグの値を格納する int 型変数のアドレスです。
func (f *FlagSet) Int64(name string, value int64, usage string) *int64
Int64 は,指定された名前,デフォルト値,および使用方法の文字列を使用して int64 フラグを定義します。 戻り値は,フラグの値を格納する int64 変数のアドレスです。
func (f *FlagSet) Int64Var(p *int64, name string, value int64, usage string)
Int64Var は,指定された名前,デフォルト値,および使用方法の文字列を使用して int64 フラグを定義します。 引数 p は,フラグの値を格納する int64 変数を指します。
func (f *FlagSet) IntVar(p *int, name string, value int, usage string)
IntVar は,指定された名前,デフォルト値,および使用法の文字列を使用して int フラグを定義します。 引数 p は,フラグの値を格納するための int 変数を指します。
func (f *FlagSet) Lookup(name string) *Flag
Lookup は名前付きフラグの Flag 構造体を返し,存在しない場合は nil を返します。
func (f *FlagSet) NArg() int
NArg は,フラグが処理された後に残っている引数の数です。
func (f *FlagSet) NFlag() int
NFlag は設定されているフラグの数を返します。
func (f *FlagSet) Name() string
Name はフラグセットの名前を返します。
func (f *FlagSet) Output() io.Writer
Output は,使用法およびエラーメッセージの出力先を返します。 output が設定されていないか nil に設定されている場合は os.Stderr が返されます。
func (f *FlagSet) Parse(arguments []string) error
Parse は,引数リストからフラグ定義を解析します。 これには,コマンド名は含まれません。 FlagSet 内のすべてのフラグが定義された後で,プログラムがフラグにアクセスする前に呼び出す必要があります。 -help または -h が設定されているが定義されていない場合,戻り値は ErrHelp になります。
func (f *FlagSet) Parsed() bool
Parsed は,f.Parse が呼び出されたかどうかを報告します。
func (f *FlagSet) PrintDefaults()
PrintDefaults は,特に設定がない限り,セット内のすべての定義済みコマンドラインフラグのデフォルト値を標準エラーに出力します。 詳細については,グローバル関数 PrintDefaults のドキュメントを参照してください。
func (f *FlagSet) Set(name, value string) error
Set は名前付きフラグの値を設定します。
func (f *FlagSet) SetOutput(output io.Writer)
SetOutput は,使用法とエラーメッセージの送信先を設定します。 output が nil の場合, os.Stderr が使用されます。
func (f *FlagSet) String(name string, value string, usage string) *string
String は,指定された名前,デフォルト値,および使用法の文字列を使用して文字列フラグを定義します。 戻り値は,フラグの値を格納する文字列変数のアドレスです。
func (f *FlagSet) StringVar(p *string, name string, value string, usage string)
StringVar は,指定された名前,デフォルト値,および使用法の文字列を使用して文字列フラグを定義します。 引数 p は,フラグの値を格納する文字列変数を指します。
func (f *FlagSet) Uint(name string, value uint, usage string) *uint
Uint は,指定された名前,デフォルト値,および使用法の文字列を使用して uint フラグを定義します。 戻り値は,フラグの値を格納する uint 変数のアドレスです。
func (f *FlagSet) Uint64(name string, value uint64, usage string) *uint64
Uint64 は,指定された名前,デフォルト値,および使用法の文字列を使用して uint64 フラグを定義します。 戻り値は,フラグの値を格納する uint64 変数のアドレスです。
func (f *FlagSet) Uint64Var(p *uint64, name string, value uint64, usage string)
Uint64Var は,指定された名前,デフォルト値,および使用方法の文字列を使用して uint64 フラグを定義します。 引数 p は,フラグの値を格納するための uint64 変数を指しています。
func (f *FlagSet) UintVar(p *uint, name string, value uint, usage string)
UintVar は,指定された名前,デフォルト値,および使用法の文字列を使用して uint フラグを定義します。 引数 p は,フラグの値を格納するための uint 変数を指します。
func (f *FlagSet) Var(value Value, name string, usage string)
Var は,指定された名前と使用方法の文字列を使用してフラグを定義します。 フラグの型と値は Value 型の最初の引数で表され,通常は Value のユーザー定義の実装を保持します。 たとえば,呼び出し側は,スライスに Value のメソッドを渡すことによって,コンマ区切りの文字列を文字列のスライスに変換するフラグを作成できます。 特に, Set はコンマ区切りの文字列をスライスに分解します。
func (f *FlagSet) Visit(fn func(*Flag))
visit は辞書順にフラグを訪問し,それぞれに fn を呼びます。 設定されているフラグのみを訪問します。
func (f *FlagSet) VisitAll(fn func(*Flag))
VisitAll は辞書順にフラグを訪問し,それぞれに対して fn を呼び出します。 設定されていないものも含め,すべてのフラグを訪問します。
Getter は, Value の内容を取得できるようにするためのインターフェースです。 Go 1 とその互換性ルールの後に登場したため, Value インターフェースの一部とするのではなく,ラップしています。 このパッケージが提供するすべての Value 型は Getter インターフェースを満たします。
type Getter interface { Value Get() interface{} }
Value は,フラグに格納された動的値へのインターフェースです。 (デフォルト値は文字列として表されます。)
Value が true を返す IsBoolFlag() bool メソッドを持つ場合,コマンドラインパーサーは次のコマンドライン引数を使用するのではなく, -name を -name=true と同等にします。
Set は,存在する各フラグに対して,コマンドラインの順序で 1 回呼び出されます。 flag パッケージは, nil ポインタなどのゼロ値のレシーバを使って String メソッドを呼び出すことができます。
type Value interface { String() string Set(string) error }
▹ 例