代码之家  ›  专栏  ›  技术社区  ›  kervin

Go中标志的解释

  •  4
  • kervin  · 技术社区  · 5 年前

    有人能解释Go中的标志吗?

    flag.Parse()
    var omitNewline = flag.Bool("n", false, "don't print final newline")
    
    3 回复  |  直到 7 年前
        1
  •  2
  •   Ignacio Vazquez-Abrams    7 年前

    参见 http://golang.org/pkg/flag/ 完整描述。

    flag.bool的参数是(name string、value bool、usage string)

    name是要查找的参数,value是默认值,并且 用法描述了标记用于-help参数或类似参数的目的,并与flag.usage()一起显示。

    有关更详细的示例检查 here

        2
  •  2
  •   Thomas Levesque    15 年前

    flag 用于分析命令行参数。如果将“-n”作为命令行参数传递,则omitnewline将设置为true。在本教程中解释得更深入:

    导入标志包后,第12行创建一个全局变量来保存echo的-n标志的值。变量omitnewline的类型为*bool,指向bool的指针。

        3
  •  2
  •   Pravin Mishra    10 年前

    flags 是指定命令行程序选项的常用方法。

    package main
    
    import (
      "flag"
      "fmt"
    )
    
    var (
      env *string
      port *int
    )
    
    // Basic flag declarations are available for string, integer, and boolean options.
    func init() {
      env = flag.String("env", "development", "a string")
      port = flag.Int("port", 3000, "an int")
    }
    
    func main() {
    
      // Once all flags are declared, call flag.Parse() to execute the command-line parsing.
      flag.Parse()
    
      // Here we’ll just dump out the parsed options and any trailing positional 
      // arguments. Note that we need to dereference the points with e.g. *evn to 
      // get the actual option values.
      fmt.Println("env:", *env)
      fmt.Println("port:", *port)
    
    }
    

    运行程序:

    go run main.go
    

    首先给出不带标志的运行程序,尝试运行该程序。请注意,如果省略标志,它们将自动获取其默认值。

    go run command-line-flags.go --env production --port 2000
    

    如果提供具有指定值的标志,则默认值将被传递的标志覆盖。