# os 包

# 获取环境变量

package main

import (
	"os"
)

// GetEnviron 获取所有环境变量
func GetEnviron() []string {
	environ := os.Environ()
	return environ
}

// Getenv 根据 key 获取对应变量
func Getenv(key string) string {
	return os.Getenv(key)
}
package main

import (
	"os"
	"testing"
)

func TestGetEnviron(t *testing.T) {
	environ := os.Environ()
	t.Log(environ)
}

func TestGetenv(t *testing.T) {
	// export MachineID=1
	getenv := os.Getenv("MachineID")
	t.Log(getenv)
}

如果环境变量仅在当前终端下生效, 那么会显示, 换一个 tty 后就不会显示.

如在当前终端下执行 export MachineID=1

go test -v -count=1 -gcflags=-l ./...

重新打开终端, 这时 MachineID 为空

注意需要加上 -count=1 去掉缓存, 因为 go test 框架在无代码改动时会从缓存中读取数据

# 源码