Golang 用 flag 来操作控制台参数

楔子

文/谦益

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.Boolflag.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

是不是挺简单的。

[获取授权]

点赞