Go学习笔记---Go中有关环境变量的操作

今天在阅读Go开源分布式 key-value 存储软件etcd的时候,在main函数中遇到了一个有关于系统平台判断的代码如下:

func checkSupportArch() {
	// TODO qualify arm64
	if runtime.GOARCH == "amd64" || runtime.GOARCH == "ppc64le" {
		return
	}
	// unsupported arch only configured via environment variable
	// so unset here to not parse through flag
	defer os.Unsetenv("ETCD_UNSUPPORTED_ARCH")
	if env, ok := os.LookupEnv("ETCD_UNSUPPORTED_ARCH"); ok && env == runtime.GOARCH {
		fmt.Printf("running etcd on unsupported architecture %q since ETCD_UNSUPPORTED_ARCH is set\n", env)
		return
	}

	fmt.Printf("etcd on unsupported platform without ETCD_UNSUPPORTED_ARCH=%s set\n", runtime.GOARCH)
	os.Exit(1)
}

其中有这样一段:

// unsupported arch only configured via environment variable
// so unset here to not parse through flag
defer os.Unsetenv("ETCD_UNSUPPORTED_ARCH")

从注释来看表示不支持的平台架构只能通过环境变量配置,因此就搜了一下go中有关环境变量的操作

Go语言中os包提供了一些环境变量的操作封装。包括:

设置环境变量:Setenv

获取环境变量:Getenv

删除指定的环境变量:Unsetenv

获取所有环境变量:Environ

清除所有环境变量:Clearenv

示例代码如下:

package main
import (
	"fmt"
	"os"
)

func main(){
	os.Setenv("TEST","test")
	fmt.Println(os.Getenv("TEST"))
	os.Unsetenv("TEST")
	fmt.Println(os.Getenv("TEST"))
}

注意:上述操作,包括Clearenv只会影响程序当前运行环境中的环境变量。并不会对程序外的系统环境变量产生影响。所以当段代码运行结束时,系统的环境变量并不会发生改变。

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值