我有一種方法來檢查所需的環境變數是否存在,如果存在則設定它,否則填充錯誤訊息。我正在做以下事情:
package main
import (
"errors"
"fmt"
"os"
"strings"
)
var (
AxGitDownloadUrl string
)
const ENV_ERR_MSG_START = "set the following environment variables ->"
const AX_GIT_DOWNLOAD_URL = "AX_GIT_DOWNLOAD_URL"
func main() {
if err := verifyMandatoryEnvVarsAndSet(); err != nil {
fmt.Printf(err.Error())
}
}
func verifyMandatoryEnvVarsAndSet() error {
errMsg := ENV_ERR_MSG_START
m := map[string]string{AX_GIT_DOWNLOAD_URL: AxGitDownloadUrl}
for k, v := range m {
errMsg = setConfig(k, v, errMsg)
}
if len(errMsg) > len(ENV_ERR_MSG_START) {
errMsg = strings.TrimSuffix(errMsg, ",")
return errors.New(errMsg)
}
return nil
}
func setConfig(envVarName, globalEnvVar, errMsg string) string {
fmt.Printf("envVarName -> %s,globalEnvVar->%s ", envVarName, globalEnvVar)
res, ok := os.LookupEnv(envVarName)
if ok {
globalEnvVar = res
} else {
errMsg = errMsg envVarName ","
}
return errMsg
}
我面臨的問題是,在地圖的值部分,它沒有設定全域變數,而是我在那里看到一個空白。
那么如何使用該setConfig方法設定全域變數值呢?
去游樂場鏈接:https ://go.dev/play/p/DC5oPmsjEIQ
uj5u.com熱心網友回復:
如果不使用指標,您將無法做您想做的事情。該變數globalEnvVar與全域變數無關。它是位于記憶體中不同地址的不同物件,它們的內容可能相同,但更新一個物件不會更新另一個物件。
將映射更改為map[string]*string并使用要更新的變數的指標。并且在進行更新時使用指標間接,例如*globalEnvVar = res.
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/514608.html
標籤:去
上一篇:AsyncAPI:僅生成有效負載
