前言:
小编在学习一门语言的时候,经常喜欢自己动手搭建一个框架,一个完整的框架,肯定具备指定生产环境、测试环境、开发环境配置,当我们需要在运行go语言的时候指定环境变量,就需要用到flag这个包了。
通过案例来快速学习:
首先创建一个main.go 文件
package main
import (
"flag"
"fmt"
)
func main() {
var env string
flag.StringVar(&env,"env","","-env 后面的值")
flag.Parse()
fmt.Println("当前环境为:",env)
}
执行 mian.go 文件
go run main.go -env test
结果如下:
结论
我们可以借助 flag包里的StringVar函数,
flag.StringVar(&env,"env","","-env 后面的值")
该函数需要4个参数,分别代表
&env 就是接收用户命令行中输入的 -env 后面的参数值
"env" 就是 -env 指定的参数,比如 -a ,这里就是 "a"
"" 默认值
"-env 后面的值" 说明
然后我们通过以下解析
flag.Parse()
说明:
StringVar() 这样的方法他仅仅是把参数名以及接收值的内存地址还有默认值等等参数关联起来而已,他并没有真正的开始从 arguments 中解析注册到 flag。因此必须要在你定义接收好 flag 参数之前并且在访问这些参数之前调用 flag.Parse()