golang
import ("gopkg.in/ini.v1")
import( "gopkg.in/ini.v1" "time")ConfigRoute, err := ini.Load("config/app.ini")if err != nil {fmt.Println(err)fmt.Println("--------- 加载配置文件失败 ---------")}// // 获取mysql分区的keysqlType := ConfigRoute.Section("mysql")// 获取特定分区下的数据MylHost := sqlType.Key("HOST").String()MylDb := sqlType.Key("DB").String()MylUser := sqlType.Key("USER").String()MylPassword := sqlType.Key("PASSWORD").String()fmt.Println(MylHost, MylDb, MylUser, MylPassword)timeStr := time.Now().Format("2006-01-02 15:04:05") // 时间格式化//port := ConfigRoute.Section("web").Key("PORT").ValueWithShadows() // 得到的是相同key:PORT的所有数据,slice//port := ConfigRoute.Section("web").Key("PORT").Value()port := ConfigRoute.Section("web").Key("PORT").Strings(",") // 通过 , 分割,得到一个slicehost := ConfigRoute.Section("web").Key("HOST").String()for _, i := range port{//fmt.Println("port:", i, "--- type:", reflect.TypeOf(i))addr := host+":"+igo http.ListenAndServe(addr, router)fmt.Println(timeStr, "服务启动成功, host:",host, " port:",i)}// 修改某个值然后进行保存ConfigRoute.Section("RUNTIME").Key("LastRunTime").SetValue(timeStr)_ = ConfigRoute.SaveTo("config/app.ini")
// 读取配置的文件代码// 将数据源的内容映射到结构体中db := new(models.DataBase) // 需要在文件开头先导入结构体的包名err = ConfigRoute.Section("mysql").MapTo(db)fmt.Println("-----------------", db)fmt.Println("-----------------", db.USER)fmt.Println("-----------------", db.HOST)web := new(models.WebServer)err = ConfigRoute.Section("web").MapTo(web)fmt.Println("-----------------", web)fmt.Println("-----------------", web.HOST)fmt.Println("-----------------", web.PORT)for _, port := range web.PORT{ fmt.Println("port ", port)}// 结构体的代码package modelstype DataBase struct { TYPE string HOST string DB string USER string PASSWORD string}type WebServer struct { HOST string PORT []string}
Go使用ini加载读取配置文件
golang