52 lines
916 B
Plaintext
52 lines
916 B
Plaintext
package config
|
|
|
|
import (
|
|
"github.com/ayflying/utility_go"
|
|
"github.com/gogf/gf/v2/util/gutil"
|
|
"sync"
|
|
)
|
|
|
|
type {cfg}Cfg struct {
|
|
Id int32 `json:"id" dc:"编号"`
|
|
}
|
|
|
|
type {mod}Mod struct {
|
|
once sync.Once
|
|
lock sync.Mutex
|
|
cfgArr []*{cfg}Cfg
|
|
cfgMap map[int32]*{cfg}Cfg
|
|
}
|
|
|
|
var {name} = &{mod}Mod{}
|
|
|
|
func (c *{mod}Mod) Load(_cfg ...string) {
|
|
c.lock.Lock()
|
|
defer c.lock.Unlock()
|
|
c.cfgArr = make([]*{cfg}Cfg, 0)
|
|
data, err := utility_go.Config.GetFile("{file}")
|
|
err = data.Scan(&c.cfgArr)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
c.cfgMap = make(map[int32]*{cfg}Cfg)
|
|
for _, v := range c.cfgArr {
|
|
c.cfgMap[v.Id] = v
|
|
}
|
|
}
|
|
|
|
func (c *{mod}Mod) List() []*{cfg}Cfg {
|
|
var list = make([]*{cfg}Cfg, len(c.cfgArr))
|
|
for k, v := range c.cfgArr {
|
|
list[k] = c.Get(v.Id)
|
|
}
|
|
return list
|
|
}
|
|
|
|
func (c *{mod}Mod) Get(id int32) *{cfg}Cfg {
|
|
if data, ok := c.cfgMap[id]; ok {
|
|
return gutil.Copy(data).(*{cfg}Cfg)
|
|
}
|
|
return nil
|
|
}
|