如何讀取設定檔
config.go
package confimport ( "bufio" "io" "os" "strings")func InitConfig(path string) map[string]string { //初始化 myMap := make(map[string]string) //開啟檔案指定目錄,返回一個檔案f和錯誤資訊 f, err := os.Open(path) //異常處理 以及確保函數結尾關閉檔案流 if err != nil { panic(err) } defer f.Close() //建立一個輸出資料流向該檔案的緩衝流*Reader r := bufio.NewReader(f) for { //讀取,返回[]byte 單行切片給b b, _, err := r.ReadLine() if err != nil { if err == io.EOF { break } panic(err) } //去除單行屬性兩端的空格 s := strings.TrimSpace(string(b)) //fmt.Println(s) //判斷等號=在該行的位置 index := strings.Index(s, "=") if index < 0 { continue } //取得等號左邊的key值,判斷是否為空白 key := strings.TrimSpace(s[:index]) if len(key) == 0 { continue } //取得等號右邊的value值,判斷是否為空白 value := strings.TrimSpace(s[index+1:]) if len(value) == 0 { continue } //這樣就成功吧設定檔裡的屬性key=value對,成功載入到記憶體中c對象裡 myMap[key] = value } return myMap}
main.go
package mainimport ( "conf" "fmt")func main() { //匯入設定檔 configMap := conf.InitConfig("src/db_configuration.txt") //擷取配置裡host屬性的value fmt.Println(configMap["host"]) //查看設定檔裡所有索引值對 fmt.Println(configMap)}
db_configuration.txt
host=localhostport=5432user=postgrespasswor=123dbname=test
結果:
localhostmap[port:5432 user:postgres passwor:123 dbname:test host:localhost]
值得注意的是:路徑可以寫絕對路徑和相對路徑,即db_configuration.txt的位置如果是放在工程下和src同級,則”src/db_configuration.txt”,如果放在隨便一個地方,就得寫全路徑”G:\java_workspace\test_config\src\db_configuration.txt”,斜杠要轉義
其實/和\等價,左斜杠不需要轉義