Go 从.env文件中获取值

Go 从.env文件中获取值,go,Go,你好,我没有得到价值​​从我的go项目中的.env文件中,有人可以帮助我吗 .env: API_PORT=8080 DB_HOST=db DB_DRIVER=postgres DB_USER=go DB_PASSWORD=root DB_NAME=go123 DB_PORT=5432 func getURI() string { fmt.Println("port:", os.Getenv("go123"), os.Ge

你好,我没有得到价值​​从我的go项目中的.env文件中,有人可以帮助我吗

.env:

API_PORT=8080
DB_HOST=db             
DB_DRIVER=postgres
DB_USER=go
DB_PASSWORD=root
DB_NAME=go123
DB_PORT=5432
func getURI() string {
    fmt.Println("port:", os.Getenv("go123"), os.Getenv("DB_HOST"))
    dbPort, err := strconv.Atoi(os.Getenv("DB_PORT"))
    fmt.Println(dbPort)
    if err != nil {
        log.Println("error on load db port from env:", err.Error())
        dbPort = 5432
    }
    return fmt.Sprintf(os.Getenv("DB_HOST"),
        dbPort,
        os.Getenv("DB_USER"),
        os.Getenv("DB_NAME"),
        os.Getenv("DB_PASSWORD"))
}
db:

API_PORT=8080
DB_HOST=db             
DB_DRIVER=postgres
DB_USER=go
DB_PASSWORD=root
DB_NAME=go123
DB_PORT=5432
func getURI() string {
    fmt.Println("port:", os.Getenv("go123"), os.Getenv("DB_HOST"))
    dbPort, err := strconv.Atoi(os.Getenv("DB_PORT"))
    fmt.Println(dbPort)
    if err != nil {
        log.Println("error on load db port from env:", err.Error())
        dbPort = 5432
    }
    return fmt.Sprintf(os.Getenv("DB_HOST"),
        dbPort,
        os.Getenv("DB_USER"),
        os.Getenv("DB_NAME"),
        os.Getenv("DB_PASSWORD"))
}
错误:

API_PORT=8080
DB_HOST=db             
DB_DRIVER=postgres
DB_USER=go
DB_PASSWORD=root
DB_NAME=go123
DB_PORT=5432
func getURI() string {
    fmt.Println("port:", os.Getenv("go123"), os.Getenv("DB_HOST"))
    dbPort, err := strconv.Atoi(os.Getenv("DB_PORT"))
    fmt.Println(dbPort)
    if err != nil {
        log.Println("error on load db port from env:", err.Error())
        dbPort = 5432
    }
    return fmt.Sprintf(os.Getenv("DB_HOST"),
        dbPort,
        os.Getenv("DB_USER"),
        os.Getenv("DB_NAME"),
        os.Getenv("DB_PASSWORD"))
}
2021/04/24 21:02:12环境:strconv.Atoi加载数据库端口出错: 正在分析“”:无效语法2021/04/24 21:02:12无法连接到
host=/var/run/postgresql user=gbcdev数据库=
:拨号错误(拨号 unix/var/run/postgresql/.s.PGSQL.5432:connect:没有这样的文件或 目录)

与我的postgres的连接是正常的,但是我的环境总是空的


我忘记了什么?

看起来您正在使用模块,但忘记了先调用Load方法

导入(
“github.com/joho/godotenv”
“操作系统”
)
func getURI()字符串{
错误:=godotenv.Load()
如果错误!=零{
log.Fatal(“加载.env文件时出错”)
}
//现在您可以使用os.Getenv。。。
}

您需要在启动时以某种方式加载/解析此.env文件。也许可以使用类似于为什么不使用
embed
+
json.Parse