admin 发表于 2021-12-25 17:45:02

golang:使用flag包,-h/-help 时返回自定义内容

■实例说明
我们使用flag包定义了命名参数,如-name等,用户可以使用-h或-help显示出所有支持的参数内容
有时候,我们想屏蔽一些参数的展示,这个时候我们可以使用下面列子做到
1)flag包自定义展示-help内容


■实例代码
package main

import (
      "flag"
      "fmt"
)

func getUsage() string {
      return `Usage of ./paramsFlag:
-env string
      非必填:执行环境,默认:test (default "test")
-name string
      非必填:姓名`
}

// getParams2 获取命令行参数
func getParams2() (string, int64, string) {
      // 定义参数:env,默认值test
      env := flag.String("env", "test", "非必填:执行环境,默认:test")

      // 定义参数:count,int64类型,默认值10
      count := flag.Int64("count", 10, "非必填:最大处理协程数量,默认:10个")

      // 定义参数name,字符串类型
      var name string
      flag.StringVar(&name, "name", "", "非必填:姓名")

      // 当用户使用-h或-help查看参数列表时,返回自定义内容
      flag.CommandLine.Usage = func() { fmt.Println(getUsage()) }

      // 解析命令行参数
      flag.Parse()

      // 注意:前两个是返回的*,后一个直接返回,这个和定义参数的方式flag.String/flag.StringVar不同导致
      return *env, *count, name
}

func main() {
      // 1、首先获取相关参数
      env, count, name := getParams2()

      // 2、执行具体任务
      fmt.Printf("env = %s\n", env)
      fmt.Printf("count = %d\n", count)
      fmt.Printf("name = %s\n", name)
}

页: [1]
查看完整版本: golang:使用flag包,-h/-help 时返回自定义内容