📜  Golang 中的 flag.Bool()函数示例

📅  最后修改于: 2021-10-25 02:20:50             🧑  作者: Mango

Go 语言为命令行解析提供内置支持,并具有可用于定义要与使用flag包的命令行程序一起使用的flag函数。该包提供了flag.Bool()函数,用于定义具有指定名称、默认值和用法字符串的布尔标志。

句法:

func Bool(name string, value bool, usage string) *bool

参数:该函数接受上面提到和下面描述的三个参数:

  • name:它是一个字符串,指定要用于标志的名称。
  • value:它是一个布尔值,指定标志要使用的默认值。
  • 用法:它是一个字符串,指定要为标志显示的用法或帮助消息。

返回值:它返回存储所定义标志值的布尔变量的地址。

下面的程序说明了flag.Bool()函数:

示例 1:

// Golang program to illustrate
// the flag.Bool() Function
package main
  
import (
    "flag"
    "fmt"
)
  
func main() {
    // Define a bool flag
    boolArgPtr := flag.Bool("arg1", false, "This is a bool argument")
  
    // Parse command line 
    // into the defined flags
    flag.Parse()
  
    fmt.Println("Bool Arg:", *boolArgPtr)
}

输出:

  • 指定标志值
    $ go run ex1.go -arg1=true
    Bool Arg: true
  • 未指定标志值(默认值)
    $ go run ex1.go
    Bool Arg: false
    

示例 2:

// Golang program to illustrate
// the flag.Bool() Function
package main
  
import (
    "flag"
    "fmt"
)
  
func main() {
  
    // Define multiple bool arguments
    plainArgPtr := flag.Bool("plaintext", false, "Enable plaintext")
    jsonArgPtr := flag.Bool("json", false, "Enable JSON")
    csvArgPtr := flag.Bool("csv", false, "Enable CSV")
  
    // Parse command line into the defined flags
    flag.Parse()
  
    fmt.Println("Enable plaintext:", *plainArgPtr)
    fmt.Println("Enable JSON:", *jsonArgPtr)
    fmt.Println("Enable CSV:", *csvArgPtr)
}

输出

  • 指定一些标志值
    $ go run ex2.go -plaintext=true -csv=true
    Enable plaintext: true
    Enable JSON: false
    Enable CSV: true
    
  • 未指定任何标志值(默认值)
    $ go run ex2.go
    Enable plaintext: false
    Enable JSON: false
    Enable CSV: false