亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Golang 中創建以全局變量為值的地圖?

如何在 Golang 中創建以全局變量為值的地圖?

Go
MYYA 2023-02-28 20:20:55
我有一種方法來檢查所需的環境變量是否存在,如果存在則設置它,否則填充錯誤消息。我正在這樣做: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


查看完整回答
反對 回復 2023-02-28
  • 1 回答
  • 0 關注
  • 158 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號