今天遇到需求,配置信息要通过命令行参数来获取。
几种方法,稍作整理,记录如下:
一、-e 变量名=变量值 和 os.Getenv()
命令行:
-e 程序里的接收的参数名=要赋的值
程序:
os.Getenv("RPC_PORT")
二、go build 和 ldflags
命令行
go build -ldflags “-X 项目名/包名.变量名=变量值”
go build -ldflags "-X study/test.RPC_PORT=8080"
程序:
package test
import (
"fmt"
)
var RPC_PORT string
func Testldflags() {
fmt.Println("hello RPC_PORT:", RPC_PORT)
}
控制台打印结果:
hello RPC_PORT: 8080
三、flag
命令行:
-变量名 变量值
go run main.go -RPC_PORT 8080
程序:
func main() {
rpcPort := flag.String("RPC_PORT","8000","端口号")
flag.Parse()
//返回的是指针变量
fmt.Println(*rpcPort)
}
控制台打印结果:
8080
四、os.Args
windows环境 golans Terminal直接执行
代码:
func main() {
fmt.Println(os.Args)
}
命令行:
1、go build #生成test.exe
2、test 8080
控制台打印结果为切片:
[test 8080]