任何人都可以在Go中解释标志吗?
flag.Parse()
var omitNewline = flag.Bool("n", false, "don't print final newline")
答案 0 :(得分:2)
flag
用于解析命令行参数。如果将“-n”作为命令行参数传递,则omitNewLine将设置为true。在教程中对它进行了更详细的解释:
导入了标志包后,第12行创建了一个全局变量来保存echo的-n标志的值。变量omitNewline的类型为* bool,指向bool的指针。
答案 1 :(得分:2)
有关完整说明,请参阅http://golang.org/pkg/flag/。
flag.Bool的参数是(name string,value bool,usage string)
name是要查找的参数,value是默认值和 usage描述了-help参数或类似标志的用途,并以flag.Usage()显示。
有关更详细的示例,请检查here
答案 2 :(得分:2)
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
如果您提供具有指定值的标志,则默认将通过传递一个覆盖。
答案 3 :(得分:0)
就我个人而言,我更喜欢 Var
类型的函数,因为它们需要引用,而不是
而不是返回一个引用。这样你就可以不使用变量
取消引用:
package main
import "flag"
func main() {
var omitNewline bool
flag.BoolVar(&omitNewline, "n", false, "don't print final newline")
flag.Parse()
println(omitNewline)
}