当前位置: 首页 > 工具软件 > Leaps-golang > 使用案例 >

golang flag -- gopl

赵渊
2023-12-01
package main

import (
	"flag"
	"fmt"
	"strings"
)

// Echo4 prints its command-line arguments.

var n = flag.Bool("n", false, "omit trailing newline")
var sep = flag.String("s", " ", "separator")

func main() {
	flag.Parse()
	fmt.Print(strings.Join(flag.Args(), *sep))
	if !*n {
		fmt.Println()
	}
}

//运行结果:
//$ go build gopl.io/ch2/echo4
//$ ./echo4 a bc def
//a bc def
//$ ./echo4 -s / a bc def
//a/bc/def
//$ ./echo4 -n a bc def
//a bc def$
//$ ./echo4 -help
//Usage of ./echo4:
//-n omit trailing newline
//-s string
//separator (default " ")

调用flag.Bool函数会创建一个新的对应布尔型标志参数的变量。它有三个属性:第一个是的命 令行标志参数的名字“n”,然后是该标志参数的默认值(这里是false),最后是该标志参数对 应的描述信息。如果用户在命令行输入了一个无效的标志参数,或者输入 -h 或 -help 参 数,那么将打印所有标志参数的名字、默认值和描述信息。类似的,调用flag.String函数将于 创建一个对应字符串类型的标志参数变量,同样包含命令行标志参数对应的参数名、默认 值、和描述信息。程序中的 sep 和 n 变量分别是指向对应命令行标志参数变量的指针,因此 必须用 *sep 和 *n 形式的指针语法间接引用它们。

当程序运行时,必须在使用标志参数对应的变量之前先调用flag.Parse函数,用于更新每个标 志参数对应变量的值(之前是默认值)。对于非标志参数的普通命令行参数可以通过调用 flag.Args()函数来访问,返回值对应对应一个字符串类型的slice。如果在flag.Parse函数解析 命令行参数时遇到错误,默认将打印相关的提示信息,然后调用os.Exit(2)终止程序。

 

 类似资料:

相关阅读

相关文章

相关问答