liyp
cdb74588b2
将配置加载逻辑从全局变量改为使用sync.Once确保单例模式, 优化了config包的结构,现在通过GetConfig方法来获取配置, 而不是直接访问全局变量。这种方式更加线程安全,并且 允许未来在不同包中异步加载配置而无需担心初始化顺序问题。 BREAKING CHANGE: 现在必须使用config.GetConfig()来获取配置, 而不是直接访问config.GlobalConfig。这可能需要更新任何 依赖于GlobalConfig的代码。
24 lines
313 B
Go
24 lines
313 B
Go
package config
|
|
|
|
import (
|
|
"sync"
|
|
|
|
"github.com/BurntSushi/toml"
|
|
)
|
|
|
|
var (
|
|
config map[string]interface{}
|
|
once sync.Once
|
|
)
|
|
|
|
func loadConfig() {
|
|
|
|
if _, err := toml.DecodeFile("config.toml", &config); err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
}
|
|
func GetConfig() map[string]interface{} {
|
|
once.Do(loadConfig)
|
|
return config
|
|
}
|