文/谦益
go开发的程序可以直接在控制器或者终端运行,但是问题来了,如果我们的程序有些变量需要用户启动程序是自定义,比如服务器的监听端口。当然我们可以把他写到配置文件里面,但是在特定环境下,还是通过启动时参数来得方便。
那怎么在程序里面获取启动时传过来的参数呢?就是这篇文章要介绍的 flag
包。
flag
包是go语言自带的包,不需要安装,所以这一步可以省略。
和其他 OS
包一样,直接
import "flag"
就可以了
编写代码- 定义的格式
flag.TypeVar(&flagvar, name, defValue, usage)
其中Type为String, Int, Bool等;并返回一个相应类型的指针。
- 来一段示例吧:
package main
import (
"flag"
"fmt"
)
func main() {
ok := flag.Bool("ok", false, "is ok")
id := flag.Int("id", 0, "id")
//这个方法很重要,
flag.Parse()
fmt.Println("ok:", *ok)
fmt.Println("id:", *id)
}
这里我们定义了两个变量,分别是ok和id,通过flag.Bool
和flag.Int
来接收启动时传入的参数。
使用就很简单了,我们可以用
go build
把我们的程序编译成可执行文件,再调起这个可执行文件就行,像下面的这样。
./main --id=12 --ok=true
也可以直接
go run main.go --id=12 --ok=true
这样测试。
输出的结果就是这样咯。
ok: true
id: 12
补充
使用flag来操作命令行参数,支持的格式有下面四种:
-id=1
--id=1
-id 1
--id 1
是不是挺简单的。
[获取授权]