2017-11-17 1 views
-4

-h 또는 --help 플래그를 정의하지 않았습니다. 그러나 다음 코드와 함께 플래그가있는 -h 을 사용하면 -h가 정의되어 있지 않다는 사실이 출력되지 않습니다 ... 이유는 무엇입니까?골란 플래그 패키지에 기본 플래그가 있습니까?

코드 :

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 

결과 :

Usage: CLI Template [OPTIONS] 

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

예상 결과 : 플래그가 제공하지만 정의되지로 : -h

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 
    } 

참고.

관련 문제