Golang Go语言中关于 godotenv 的求助

我在 main 函数调用了 godotenv.Load(),但是在其他包里使用时如果不把 os.Getenv 放在函数里,直接在函数外运行,就会获取不到环境变量,大概是因为 godotenv 还没把变量读进去吧,这个情况下应该怎么写呢?必须写一个函数 return 这些环境变量吗?


Golang Go语言中关于 godotenv 的求助
11 回复

你自己就有答案了不是吗
把 os.Getenv 放到函数里就行了

更多关于Golang Go语言中关于 godotenv 的求助的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


func init() {
godotenv.Load()
}

搜索 golang init 函数

几个函数都用一个环境变量,不想每个函数里面都拿一次嘛


是每个 package 里都写一次 load 吗?

那你可以写个结构体,在 main()里获取 env 后赋值给它,然后把函数都写成它的 method

了解一下 init 函数

比较简单&勉强算好维护的办法

package config

func init() { LOAD_YOUR_CONFIG() }

func Get(string) string { … }

一般都是将 env 读取出来,覆盖配置文件的值,然后保存到配置结构体中,后续只需要读取配置参数

常量和 init 不保证初始化顺序的,还是别这么搞比较好

import _ "github.com/joho/godotenv/autoload"

用这个,最好结合 7 楼的做法

pkg 里面确实麻烦,可以用我这个库

https://github.com/ysmood/dotenv

关于您在Go语言中使用godotenv库的求助,我很乐意提供一些帮助。

godotenv是一个非常实用的Go库,它允许你从.env文件中加载环境变量到你的应用程序中。这在开发过程中特别有用,因为它允许你将配置与代码分离,从而更容易管理和修改。

首先,你需要确保你的项目中已经安装了godotenv库。你可以通过运行以下命令来安装它:

go get github.com/joho/godotenv

安装完成后,你可以在你的Go代码中这样使用它:

package main

import (
    "fmt"
    "github.com/joho/godotenv"
    "os"
)

func main() {
    err := godotenv.Load()
    if err != nil {
        fmt.Println("Error loading .env file")
        os.Exit(1)
    }

    // 现在你可以像访问普通环境变量一样访问.env文件中的变量了
    dbHost := os.Getenv("DB_HOST")
    fmt.Println("Database Host:", dbHost)
}

确保你的项目根目录下有一个.env文件,并且里面包含了你要加载的环境变量,例如:

DB_HOST=localhost
DB_PORT=3306

如果你遇到了任何具体的问题,比如加载文件失败、变量未正确解析等,请确保.env文件的路径正确,并且文件中的格式没有错误(例如,没有多余的空格或缺少等号)。

希望这些信息能帮到你!如果还有其他问题,请随时提问。

回到顶部