也许你也会有我一样的困扰,开发了很多的GO语言程序,发现很多程序都需要一个配置文件,这有一个简单的配置文件解析、加载、重载模板…
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
package config
import "sync"
var (
configFile string
cachedConfig Config
cachedConfigMux sync.RWMutex
)
type Config struct {
// TODO add your configs
}
func ParseConfig(file string) (cfg Config, e error) {
// TODO parse your configs
return
}
// 加载配置
func LoadConfig(file string) (e error) {
cfg, e := ParseConfig(file)
if e != nil {
return
}
cachedConfig = cfg
configFile = file
return
}
// 重新加载配置
func ReloadConfig() (e error) {
cfg, e := ParseConfig(configFile)
if e != nil {
return
}
cachedConfigMux.Lock()
defer cachedConfigMux.Unlock()
cachedConfig = cfg
return
}
// 获取配置
func Get() *Config {
cachedConfigMux.RLock()
defer cachedConfigMux.RUnlock()
return &cachedConfig
}
|
提示:通常你的配置文件格式可以是json, yaml或者toml,json文件没有注释的功能,不是很建议使用,个人比较喜欢使用yaml,看起来很简洁。