github.com/angenalZZZ/gofunc@v0.0.0-20210507121333-48ff1be3917b/configfile/ini.go (about) 1 package configfile 2 3 import ( 4 "gopkg.in/ini.v1" 5 "strings" 6 ) 7 8 // IniTo 转换ini文件成数据对象. 9 // 10 // 例如: 11 // err := IniTo("file.ini", &obj) 12 // 13 func IniTo(filename string, config interface{}) error { 14 return ini.MapTo(config, filename) 15 } 16 17 // IniTos 转换ini文件成多个对象. 18 // 19 // 例如: 20 // err := IniTos("file.ini", "obj1,obj2", &obj1, &obj2) 21 // 22 func IniTos(filename string, sections string, configs ...interface{}) error { 23 if cfg, err := ini.Load(filename); err != nil { 24 return err 25 } else { 26 s := strings.Split(sections, ",") 27 for i, config := range configs { 28 if err = cfg.Section(s[i]).MapTo(config); err != nil { 29 return err 30 } 31 } 32 } 33 return nil 34 } 35 36 // Ini 生成ini文件. 37 // 38 // 例如: 39 // err := Ini(&obj, "file.ini") 40 // 41 func Ini(config interface{}, filename string) error { 42 cfg := ini.Empty() 43 if err := ini.ReflectFrom(cfg, config); err != nil { 44 return err 45 } else { 46 return cfg.SaveTo(filename) 47 } 48 }