【Go学习】如何使用os包操作环境变量

Go标准库提供了非常多实用的功能,其中就包含了操作环境变量

环境变量是操作系统中用于存储配置信息的变量,这些信息可以在不同的程序之间共享。它们通常用于存储系统的全局设置,如临时文件目录、路径、默认的shell、语言设置等。

环境变量通常在程序启动时就已设置好,在需要的时候随时读取。Go使用简单的几个函数就可以对环境变量进行增删查改。下面分别讲解。

一、列出所有环境变量

func Environ() []string

Environ 返回一个字符串切片的副本,这些字符串代表环境变量,形式为 “key=value”。

示例:

package mainimport ("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 mainimport ("fmt""os"
)func main() {os.Clearenv()for _, value := range os.Environ() {fmt.Println(value)}
}

输出结果为空,说明该命令起作用了。屏蔽第9行,再次运行,系统环境变量再次列出,和一章节结果相同。

三、检索环境变量

func LookupEnv(key string) (string, bool)

LookupEnv 检索由键命名的环境变量的值。如果环境中有该变量,则返回值(可能为空)以及一个为真的布尔值。否则,返回的值将为空,布尔值将为假。

示例:

package mainimport ("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 mainimport ("fmt""os"
)func main() {goPath := os.Getenv("GOPATH")fmt.Println("GOPATH = ", goPath)
}

输出如下:

GOPATH =  D:\go

五、设置环境变量

func Setenv(key, value string) error

Setenv 设置由键命名的环境变量的值。如果遇到任何错误,它将返回该错误。

示例:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/875896.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

平均场理论下的维度约简公式与应用解析

平均场理论下的维度约简公式与应用解析 平均场理论的核心作用 平均场理论是一种处理复杂网络系统的方法,特别是在网络系统规模庞大时。它通过将耦合的多元微分方程组降至多个一元微分方程组,从而实现维度约简,极大地提高了计算效率。其基本…

C#高级:枚举(Enum)从索引、值到注释的完整使用技巧

目录 一、推荐的枚举写法 二、获取注释的封装代码 三、已知【枚举】,获取注释、索引 四、已知【索引】,获取枚举值、注释 五、已知【注释】,获取枚举值、索引 六、创建一个【枚举字典】,key索引,value(枚举值&am…

河道高效治理新策略:视频AI智能监控如何助力河污防治

一、背景与现状 随着城市化进程的加快,河道污染问题日益严重,对生态环境和居民生活造成了严重影响。为了有效治理河道污染,提高河道管理的智能化水平,TSINGSEE青犀提出了一套河污治理视频智能分析及管理方案。方案依托先进的视频…

gitee设置ssh公钥密码避免频繁密码验证

gitee中可以创建私有项目,但是在clone或者push都需要输入密码, 比较繁琐。 公钥则可以解决该问题,将私钥放在本地,公钥放在gitee上,当对项目进行操作时带有的私钥会在gitee和公钥进行验证,避免了手动输入密…

WEB攻防-通用漏洞-SQL 读写注入-MYSQLMSSQLPostgreSQL

什么是高权限注入 高权限注入指的是攻击者通过SQL注入漏洞,利用具有高级权限的数据库账户(如MYSQL的root用户、MSSQL的sa用户、PostgreSQL的dba用户)执行恶意SQL语句。这些高级权限账户能够访问和修改数据库中的所有数据,甚至执行…

Spring项目中发生log依赖冲突如何解决

异常信息 Caused by: org.apache.logging.log4j.LoggingException: log4j-slf4j-impl cannot be present with log4j-to-slf4分析 根据异常信息分析,可以看出是slf4j的实现有两个依赖,只需要移除log4j-slf4j-impl或log4j-to-slf4j其中一个库的依赖&…

如何合并电脑硬盘分区?轻松合并电脑硬盘分区

在日常使用电脑的过程中,我们有时需要对硬盘进行分区管理。然而,随着时间的推移,我们可能会发现原有的分区设置不再满足需求,这时就需要对分区进行调整,甚至合并分区。那么,我们该如何合并电脑硬盘分区呢&a…

攻坚克难岁月长,自主腾飞世界强——回顾近代中国数据库的发展与飞跃

前言 最近看了《中国数据库前世今生》纪录片,感触颇深,也是一直在思考到底该用何种方式起笔来回顾这段筚路蓝缕却又充满民族自豪感的历程。大概构思了一周左右吧,我想,或许还是应该从那个计算机技术在国内刚刚萌芽的年代开始讲起…

Arthas在线诊断案例实战整理

会一直持续更新。。。 Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时…

SAPUI5基础知识19 - 视图嵌套(Nested Views)

1. 背景 SAPUI5 是一个用于构建企业级 Web 应用程序的 JavaScript 框架。它提供了丰富的 UI 控件和工具,帮助开发者创建复杂的用户界面。Nested Views 是 SAPUI5 中的一种设计模式,允许在一个视图中嵌套另一个视图。这种模式有助于模块化和重用代码&…

低代码如何加速数字化转型

数字化转型,正日益决定企业成功的关键。这里的一个关键因素是它可以以更快的速度和质量来实施技术计划。在当今瞬息万变的商业环境中,战略性地采用低代码平台对于旨在加快上市时间、增强业务敏捷性和促进跨团队无缝协作的首席技术官来说至关重要。日益增…

react中组件间的通信

一、父传子 1.代码展示 import React, { useState } from react;function SonPage(props){ // 子组件const {msg} propsreturn (<div>我是子组件 {msg}</div>) }function App() { // 父组件const [msgText,setMsgText] useState(父传子)return (<div classN…

快速入门Jupyter notebook

快速入门 Jupyter notebook 一、前言&#xff08;一&#xff09;优点&#xff08;二&#xff09;特点&#xff08;三&#xff09;调用运行&#xff08;四&#xff09;新建 二、认识界面快捷键&#xff08;一&#xff09;三种模式&#xff08;1&#xff09;蓝色模式&#xff1a;…

【echarts】中如何设置曲线展示最新值、最大值、最小值

需要用到的属性&#xff1a;图表标注 series-line. markPoint 默认可以通过 type直接标注&#xff1a;‘min’ 最小值、‘max’ 最大值、‘average’ 平均值。 markPoint: {data: [{type: max},{type: min}]}如何展示最新值 如果要展示最新值得话&#xff0c;需要设置 标注…

ICMPv6与NDP

ICMP ICMPv6是 IPv6 的基础协议之一。 在 IPv6 报文头部中, Next Header 字段值为 58 则对应为 ICMPv6 报文。 ICMPv6报文用于通告相关信息或错误。 ICMP报文 Type字段:0-127表示差错消息,128-255表示信息消息。 ICMP消息类型 差错消息 差错消息用于报告在转发IPv6数据包过…

如何应对SQL注入攻击?

引言 在现今的网络世界中&#xff0c;安全性已成为至关重要的话题。SQL注入&#xff08;SQL Injection&#xff09;是一种常见且危险的网络攻击方式&#xff0c;攻击者通过向SQL查询中插入恶意代码来操控数据库&#xff0c;从而获取敏感信息或破坏数据。了解SQL注入的各种类型…

案例分析:人工智能在航空航天领域的应用

作者主页: 知孤云出岫 目录 作者主页:案例分析&#xff1a;人工智能在航空航天领域的应用引言人工智能在航空航天中的主要应用案例分析案例一&#xff1a;AI优化航天器设计案例二&#xff1a;AI辅助飞行安全——预测维护案例三&#xff1a;AI自动驾驶系统案例四&#xff1a;A…

【Maven学习】-2. POM讲解

文章目录 2. POM讲解2.1 POM.xml2.2 POM 结构1) modules2) parent3) properties4) dependency依赖范围 5) repository仓库分类 6) build自定义打包名字指定打包路径 7) 插件-pluginsmaven-compiler-pluginmaven-surefire-pluginmaven-jar-pluginmaven-install-pluginmaven-clea…

秋招突击——7/23——百度提前批面试准备和正式面试

文章目录 引言一面准备面试预演一1、讲一下hashcode()和equals()关系2、equals()和有什么区别3、讲一下重载和重写的区别4、讲一下深拷贝、浅拷贝的区别5、讲一下Java异常的基类&#xff0c;运行时异常举几个例子&#xff0c;什么情况下会出现&#xff1f;6、讲一下Java中线程的…

vue3+ts+vite+electron+electron-packager打包成exe文件

目录 1、创建vite项目 2、添加需求文件 3、根据package.json文件安装依赖 4、打包 5、electron命令运行 6、electron-packager打包成exe文件 Build cross-platform desktop apps with JavaScript, HTML, and CSS | Electron 1、创建vite项目 npm create vitelatest 2、添…