我有一種方法來檢查所需的環境變量是否存在,如果存在則設置它,否則填充錯誤消息。我正在這樣做:package mainimport ( "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
1 回答

慕田峪4524236
TA貢獻1875條經驗 獲得超5個贊
如果不使用指針,您將無法做您想做的事情。該變量globalEnvVar
與全局變量無關。它是位于內存中不同地址的不同對象,它們的內容可能相同但更新一個對象不會更新另一個對象。
將映射更改為map[string]*string
并使用指向要更新的變量的指針。并且在進行更新時使用指針間接尋址,例如*globalEnvVar = res
。
- 1 回答
- 0 關注
- 158 瀏覽
添加回答
舉報
0/150
提交
取消