【Go学习】如何使用os包操作环境变量
创始人
2025-02-11 05:32:17
0

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操作环境变量的全部内容,学会了吗?

相关内容

热门资讯

黑科技插件(wpk透视外挂)外... 黑科技插件(wpk透视外挂)外挂透视辅助教程(透视)都是是有挂(黑科技解说)-哔哩哔哩1、下载好wp...
黑科技app"wpk... 黑科技app"wpk微扑克真的有挂吗"wepoke智能ai(竟然有挂)-哔哩哔哩;1)wpk微扑克真...
黑科技存在!微扑克怎么用ai辅... 黑科技存在!微扑克怎么用ai辅助(ai辅助)太坑了有挂(必备教程黑科技辅助)-哔哩哔哩微扑克怎么用a...
黑科技辅助!德扑之星软件有猫腻... 黑科技辅助!德扑之星软件有猫腻吗,微扑克智能ai辅助,教你教程(有挂规律)-哔哩哔哩;黑科技辅助!德...
黑科技美元局(wepoke辅助... 黑科技美元局(wepoke辅助使用方法)外挂透视辅助助手(透视)其实有挂(黑科技插件)-哔哩哔哩1、...
黑科技教学"wepo... 黑科技教学"wepower有外挂"德州之星辅助器(好像有挂)-哔哩哔哩1、德州之星辅助器系统规律教程...
黑科技系统!微扑克发牌算法(a... 黑科技系统!微扑克发牌算法(ai辅助)太坑了是有挂(介绍教程黑科技解说)-哔哩哔哩1、很好的工具软件...
黑科技脚本!微扑克外挂,wep... 黑科技脚本!微扑克外挂,wepoke透明挂使用教程,力荐教程(有挂教学)-哔哩哔哩1、很好的工具软件...
黑科技辅助挂(微扑克ai辅助器... 黑科技辅助挂(微扑克ai辅助器苹果版)外挂黑科技辅助器(透视)本来是有挂(黑科技揭秘)-哔哩哔哩微扑...
黑科技好牌!aapoker在哪... 黑科技好牌!aapoker在哪里下载(ai辅助)太坑了存在有挂(2025新版黑科技揭秘)-哔哩哔哩1...