diff --git a/Software/Development/Language/Go/Package/Go_语言_flag_包基本使用.md b/Software/Development/Language/Go/Package/Go_语言_flag_包基本使用.md index ba5c36e..aef0815 100644 --- a/Software/Development/Language/Go/Package/Go_语言_flag_包基本使用.md +++ b/Software/Development/Language/Go/Package/Go_语言_flag_包基本使用.md @@ -77,7 +77,41 @@ flag.DurationVar(&delay, "d", 0, "时间间隔") Flag 解析在第一个非 flag 参数(单个”-“不是 flag 参数)之前停止,或者在终止符”–“之后停止。 -### 3.4.flag 其他函数 +### 3.4.flag.Usage + +golang 编译的二进制文件的 help 输出实质上 是调用的 flag.Usage() 方法, 而该方法是一个变量, 接受一个闭包, 源码如下: + +```go +// /src/flag/flag.go:580 +var Usage = func() { + fmt.Fprintf(CommandLine.Output(), "Usage of %s:\n", os.Args[0]) + PrintDefaults() +} +``` + +所以你可以直接覆盖掉 flag的 Usage 方法来修改, 例如这样: + +```go +package main + +import ( + "flag" + "fmt" +) + +func init(){ + flag.Usage = usage + flag.Parse() +} + +func usage(){ + fmt.Print("nginx version v1.12") +} + +func main(){} +``` + +### 3.5.flag 其他函数 ```go flag.Args() // 返回命令行参数后的其他参数,以 []string 类型