Go 使用os包操作环境变量的方法
作者:经云
Go标准库提供了非常多实用的功能,其中就包含了操作环境变量。
环境变量是操作系统中用于存储配置信息的变量,这些信息可以在不同的程序之间共享。它们通常用于存储系统的全局设置,如临时文件目录、路径、默认的shell、语言设置等。
环境变量通常在程序启动时就已设置好,在需要的时候随时读取。Go使用简单的几个函数就可以对环境变量进行增删查改。下面分别讲解。
一、列出所有环境变量
func Environ() []string
Environ 返回一个字符串切片的副本,这些字符串代表环境变量,形式为 “key=value”。
示例:
package main import ( "fmt" "os" ) func main() { for _, value := range os.Environ() { fmt.Println(value) } }
输出如下(环境变量的一部分):
GOBIN=d:\Program files\Go\bin"
GOFLAGS=-mod=vendor
GOMODCACHE=D:\go\pkg\mod
GOPATH=D:\go
GOPROXY=https://goproxy.io,direct
...
二、清除所有环境变量
func Clearenv()
它会在程序运行时删除所有环境变量,程序结束后,系统环境变量不会变化,放心,还在。有些地方说这个命令很危险,其实没什么。
示例:
package main import ( "fmt" "os" ) func main() { os.Clearenv() for _, value := range os.Environ() { fmt.Println(value) } }
输出结果为空,说明该命令起作用了。屏蔽第9行,再次运行,系统环境变量再次列出,和一章节结果相同。
三、检索环境变量
func LookupEnv(key string) (string, bool)
LookupEnv 检索由键命名的环境变量的值。如果环境中有该变量,则返回值(可能为空)以及一个为真的布尔值。否则,返回的值将为空,布尔值将为假。
示例:
package main import ( "fmt" "os" ) func main() { goPath, bgExist := os.LookupEnv("GOPATH") fmt.Println("GOPATH =", goPath, ", bgExist =", bgExist) luaPath, blExist := os.LookupEnv("LUAPATH") fmt.Println("LUAPATH =", luaPath, ", blExist =", blExist) }
输出如下:
GOPATH = D:\go , bgExist = true
LUAPATH = , blExist = false
四、获取环境变量
func Getenv(key string) string
Getenv 用于检索由键命名的环境变量的值。它返回该值,如果变量不存在,则返回空字符串。要区分空值和未设置的值,请使用 LookupEnv。
示例:
package main import ( "fmt" "os" ) func main() { goPath := os.Getenv("GOPATH") fmt.Println("GOPATH = ", goPath) }
输出如下:
GOPATH = D:\go
五、设置环境变量
func Setenv(key, value string) error
Setenv 设置由键命名的环境变量的值。如果遇到任何错误,它将返回该错误。
示例:
package main import ( "fmt" "os" ) func main() { err := os.Setenv("TESTENV", "TestValue") if err != nil { os.Exit(1) } testValue := os.Getenv("TESTENV") fmt.Println("TESTENV = ", testValue) }
输出如下:
TESTENV = TestValue
六、删除环境变量
func Unsetenv(key string) error
Unsetenv 删除单个环境变量。
示例:
package main import ( "fmt" "os" ) func main() { err := os.Unsetenv("TESTENV") if err != nil { os.Exit(1) } testValue := os.Getenv("TESTENV") fmt.Println("TESTENV = ", testValue) }
输出为:
TESTENV =
七、展开环境变量
func ExpandEnv(s string) string
ExpandEnv 会根据当前环境变量的值,将字符串中的 ${var} 或 $var 替换掉。对未定义变量的引用将被空字符串替换。相当于不需要os.Getenv了。
示例:
package main import ( "fmt" "os" ) func main() { os.Setenv("GAME_NAME", "Chronicles of Darkness") os.Setenv("GAME_DIR", "/usr/games") fmt.Println(os.ExpandEnv("The $GAME_NAME game is placed in the ${GAME_DIR} path.")) }
输出结果为:
The Chronicles of Darkness game is placed in the /usr/games path.
以上就是go利用标准库os操作环境变量的全部内容,学会了吗?
到此这篇关于Go 如何使用os包操作环境变量的文章就介绍到这了,更多相关Go 环境变量内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!