2017-11-17 1 views
-4

-hまたは--helpフラグを定義していません。 次のコードでは、フラグ-h を使用しても、-hが定義されていないという事実は出力されません。 ...なぜですか?Golangフラグパッケージにはデフォルトフラグがありますか?

コード:

package main 

import (
    "flag" 
    "fmt" 
) 

func showHelp() { 
    fmt.Println(` 

    Usage: CLI Template [OPTIONS] 

    Options: 
     -h, --help  Print the help log. 
    `) 
} 

// If user makes wrong usage of flags, trigger ShowHelp() 
func validateFlag(flag *flag.FlagSet) { 
    flag.Usage = func() { 
     showHelp() 
    } 
} 

func main() { 

    // Check if the current flag is valid 
    validateFlag(flag.CommandLine) 

    // Parse the command-line flags 
    flag.Parse() 
} 

コマンド:

# I'm using makefile so 
make all 
bin/main -h 

結果:フラグを設けなく定義されない:

-h結果予想

Usage: CLI Template [OPTIONS] 

Options: 
    -h, --help  Print the help log. 

flag provided but not defined: -h Usage: CLI Template [OPTIONS] Options: -h, --help Print the help log. 
+0

'flag.Usage'に割り当てる新しい関数を定義する代わりに、直接' showHelp'を 'flag.Usage = showHelp'のように割り当ててください –

答えて

3

それはwritten to do soだから:あなたがあなた自身の-h-helpフラグを定義した場合、それは内蔵の行動よりも優先されること

if name == "help" || name == "h" { // special case for nice help message. 
     f.usage() 
     return false, ErrHelp 
    } 

注意。

関連する問題