一个关于 godotenv 的求助

288 天前
 ssshooter

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

1210 次点击
所在节点    Go 编程语言
10 条回复
NessajCN
288 天前
你自己就有答案了不是吗
把 os.Getenv 放到函数里就行了
Vegetable
288 天前
func init() {
godotenv.Load()
}

搜索 golang init 函数
ssshooter
288 天前
@NessajCN 几个函数都用一个环境变量,不想每个函数里面都拿一次嘛


@Vegetable 是每个 package 里都写一次 load 吗?
NessajCN
288 天前
@ssshooter 那你可以写个结构体,在 main()里获取 env 后赋值给它,然后把函数都写成它的 method
FanGanXS
288 天前
了解一下 init 函数
mcfog
288 天前
比较简单&勉强算好维护的办法

package config

func init() { LOAD_YOUR_CONFIG() }

func Get(string) string { ... }
yleoer
288 天前
一般都是将 env 读取出来,覆盖配置文件的值,然后保存到配置结构体中,后续只需要读取配置参数
learningman
288 天前
常量和 init 不保证初始化顺序的,还是别这么搞比较好
lanlanye
288 天前
import _ "github.com/joho/godotenv/autoload"

用这个,最好结合 7 楼的做法
ysmood
267 天前
pkg 里面确实麻烦,可以用我这个库

https://github.com/ysmood/dotenv

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/959772

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX