ini配置檔案解析 Go語言

2021-10-02 20:02:22 字數 2961 閱讀 4449

)//ini配置檔案解析器

//mysqlconfig mysql配置結構體type mysqlconfig struct

//redisconfig redis配置結構體type redisconfig struct

//configtype config struct

func

loadini

(filename string

, data inte***ce

)(err error

)傳進來的data引數必須是結構體型別(配置檔案不止乙個字段) if t.elem().kind() != reflect.struct

讀檔案得到位元組型別資料 b, err := ioutil.readfile(filename) if err != nil //string(b) //將位元組陣列轉換成字串 lineslice := strings.split(string(b), "\r\n") "%#v\n", lineslice) var structname string 一行一行讀資料 for idx, line := range lineslice 如果是注釋就跳過 if strings.hasprefix(line, ";") || strings.hasprefix(line, "#") 如果是就表示是節(section) if strings.hasprefix(line, "[") // [...]若...為空也不行 //中間內容 strings.trimspace(line[1:len(line)-1]) sectionname := strings.trimspace(line[1 : len(line)-1]) if len(sectionname) == 0 //根據字串sectionname的內容去結構體中找data裡面根據反射找對應的結構體

for i :=

0; i < t.

elem()

.numfield()

; i++

} } else index := strings.index(line, "=") key := strings.trimspace(line[:index]) value := strings.trimspace(line[index+1:]) //根據structname去data裡面把對應的巢狀結構體給取出來 v := reflect.valueof(data) svalue := v.elem().fieldbyname(structname) //拿到巢狀結構體的值資訊 stype := svalue.type() //拿到巢狀結構體的型別資訊 if stype.kind() != reflect.struct var fieldname string var filetype reflect.structfield //遍歷巢狀結構體的每乙個字段 判斷tag是不是等於key for i := 0; i < svalue.numfield(); i++ } //如果key=tag 給這個字段賦值 //根據fieldname去取出這個字段 if len(fieldname) == 0 fileobj := svalue.fieldbyname(fieldname) //對其賦值 fmt.println(fieldname, filetype.type.kind()) switch filetype.type.kind() fileobj.setint(valueint) case reflect.bool: var valuebool bool valuebool, err = strconv.parsebool(value) if err != nil fileobj.setbool(valuebool) }}}

return

}func

main()

fmt.

println

(cfg)

}

INI配置檔案格式解析

ini配置檔案有三要素parameters,sections和comments。1.parameters 指一條配置,就像key value這樣的。2.sections sections是parameters的集合,sections必須獨佔一行並且用括起來。sections沒有明顯的結束方式,乙個s...

ini形式配置檔案解析庫 iniparser

官方 github 1.編譯生成動態鏈結庫 a.解壓 tar zxvf iniparser 3.1.tar.gz cd tar zxvf iniparserb.編譯 make拷貝src下的標頭檔案dictionary.h和iniparser.h以及壓縮包目錄下的靜態庫libiniparser.a和動...

讀寫配置檔案 ini

配置檔案中經常用到ini檔案,在vc中其函式分別為 其中個引數的意思 lpctstr lpstring 是鍵值,也就是變數的值,必須為lpctstr或cstring型別 lpctstr lpfilename 完整的ini檔案路徑名 lpctstr lpdefaut 如果沒有其前兩個引數值,則將此值賦...