英文:
Get variables from the environment in go?
问题
我有一个数据集存储在环境变量GOPATH中,我想在我的程序中以编程方式提取这些数据。我希望将所有的环境变量作为map[string]interface{}
获取。这是因为我想将环境变量的值与我当前获取的JSON配置文件集成在一起。
var data map[string]interface{}
file, err := ioutil.ReadFile(configFilePath)
if err != nil {
log.Fatal(err)
}
err = json.Unmarshal(file, &data)
if err != nil {
log.Fatal(err)
}
英文:
I have data set in the environment variable GOPATH and I would like to programatically extract this data in my program. I would prefer to fetch all the ENV variables as a map[string]interface{}
. This is because I want to integrate the ENV values with my JSON config witch I currently fetch like so.
var data map[string]interface{}
file, err := ioutil.ReadFile(configFilePath)
if err != nil {
log.Fatal(err)
}
err = json.Unmarshal(file, &data)
if err != nil {
log.Fatal(err)
}
答案1
得分: 9
os.Environ() 返回表示环境的字符串,格式为 "key=value"。要创建一个映射,可以遍历这些字符串,以 "=" 进行分割,并设置映射的条目。
m := make(map[string]string)
for _, e := range os.Environ() {
if i := strings.Index(e, "="); i >= 0 {
m[e[:i]] = e[i+1:]
}
}
英文:
os.Environ() returns the strings representing the environment in the form "key=value". To create a map, iterate through the strings, split on "=" and set the map entry.
m := make(map[string]string)
for _, e := range os.Environ() {
if i := strings.Index(e, "="); i >= 0 {
m[e[:i]] = e[i+1:]
}
}
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论