登录
首页 >  Golang >  Go问答

保持Env变量的持久性

来源:stackoverflow

时间:2024-03-21 12:46:28 185浏览 收藏

欢迎各位小伙伴来到golang学习网,相聚于此都是缘哈哈哈!今天我给大家带来《保持Env变量的持久性》,这篇文章主要讲到等等知识,如果你对Golang相关的知识非常感兴趣或者正在自学,都可以关注我,我会持续更新相关文章!当然,有什么建议也欢迎在评论留言提出!一起学习!

问题内容

当服务启动时,会生成一个会话密钥,我尝试将其放入环境变量中以供将来使用(也在重新启动服务时)。

我为此使用了os.setenv(),但是重新启动后,环境变量为空。

sessionKey := os.Getenv(_sessionKey)
if sessionKey == "" {
  sessionKey = string(securecookie.GenerateRandomKey(32))
  os.Setenv(_sessionKey, sessionKey)
}
sessionsStore := sessions.NewCookieStore([]byte(sessionKey))

是否有其他方法可以使用环境变量来实现此目的,或者最好将其保存到文件中?


正确答案


使用“viper”lib 将环境变量保存到文件中:

func Getenv(key string) string {
    viper.SetConfigType("env")
    viper.SetConfigFile(".env")

    err := viper.ReadInConfig()
    if err != nil {
        log.Fatalf("Error while reading config file %s", err)
    }

    value, ok := viper.Get(key).(string)
    if !ok {
        return ""
    }

    return value
}

func Setenv(key string, value string) {
    viper.SetConfigType("env")
    viper.SetConfigFile(".env")

    err := viper.ReadInConfig()
    if err != nil {
        log.Fatalf("Error while reading config file %s", err)
    }

    viper.Set(key, value)

    err = viper.WriteConfig()
    if err != nil {
        log.Fatalf("Error while writing config file %s", err)
    }
}

好了,本文到此结束,带大家了解了《保持Env变量的持久性》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多Golang知识!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>