實(shí)際項(xiàng)目中,還有一個(gè)比較重要的基礎(chǔ)功能,就是讀取相關(guān)的配置文件。今天就來(lái)說(shuō)一說(shuō),Golang 是如何讀取YAML,JSON,INI等配置文件的。

1. json使用

JSON 應(yīng)該比較熟悉,它是一種輕量級(jí)的數(shù)據(jù)交換格式。層次結(jié)構(gòu)簡(jiǎn)潔清晰 ,易于閱讀和編寫,同時(shí)也易于機(jī)器解析和生成。

1. 創(chuàng)建 conf.json:

{

"enabled": true,

"path": "/usr/local"

}

2. 新建config_json.go:

package mainimport ( "encoding/json" "fmt" "os")type configuration struct { Enabled bool Path string}func main() { // 打開文件 file, _ := os.Open("conf.json") // 關(guān)閉文件 defer file.Close() //NewDecoder創(chuàng)建一個(gè)從file讀取并解碼json對(duì)象的*Decoder,解碼器有自己的緩沖,并可能超前讀取部分json數(shù)據(jù)。 decoder := json.NewDecoder(file) conf := configuration{} //Decode從輸入流讀取下一個(gè)json編碼值并保存在v指向的值里 err := decoder.Decode(&conf) if err != nil { fmt.Println("Error:", err) } fmt.Println("path:" + conf.Path)}

啟動(dòng)運(yùn)行后,輸出如下:

D:Go_Pathgosrcconfigmgr>go run config_json.gopath:/usr/local

2. ini的使用

INI文件格式是某些平臺(tái)或軟件上的配置文件的非正式標(biāo)準(zhǔn),由節(jié)(section)和鍵(key)構(gòu)成,比較常用于微軟windows操作系統(tǒng)中。這種配置文件的文件擴(kuò)展名為INI。

1. 創(chuàng)建 conf.ini:

[Section]enabled = truepath = /usr/local # another comment

2.下載第三方庫(kù):go get gopkg.in/gcfg.v1

3. 新建 config_ini.go:

package mainimport ( "fmt" gcfg "gopkg.in/gcfg.v1")func main() { config := struct { Section struct { Enabled bool Path string } }{} err := gcfg.ReadFileInto(&config, "conf.ini") if err != nil { fmt.Println("Failed to parse config file: %s", err) } fmt.Println(config.Section.Enabled) fmt.Println(config.Section.Path)}

啟動(dòng)運(yùn)行后,輸出如下:

D:Go_Pathgosrcconfigmgr>go run config_ini.gotrue/usr/local

3. yaml使用

yaml 可能比較陌生一點(diǎn),但是最近卻越來(lái)越流行。也就是一種標(biāo)記語(yǔ)言。層次結(jié)構(gòu)也特別簡(jiǎn)潔清晰 ,易于閱讀和編寫,同時(shí)也易于機(jī)器解析和生成。

golang的標(biāo)準(zhǔn)庫(kù)中暫時(shí)沒(méi)有給我們提供操作yaml的標(biāo)準(zhǔn)庫(kù),但是github上有很多優(yōu)秀的第三方庫(kù)開源給我們使用。

1. 創(chuàng)建 conf.yaml:

enabled: truepath: /usr/local

2. 下載第三方庫(kù):go get gopkg.in/yaml.v2

3. 創(chuàng)建 config_yaml.go:

package mainimport ( "fmt" "io/ioutil" "log" "gopkg.in/yaml.v2")type conf struct { Enabled bool `yaml:"enabled"` //yaml:yaml格式 enabled:屬性的為enabled Path string `yaml:"path"`}func (c *conf) getConf() *conf { yamlFile, err := ioutil.ReadFile("conf.yaml") if err != nil { log.Printf("yamlFile.Get err #%v ", err) } err = yaml.Unmarshal(yamlFile, c) if err != nil { log.Fatalf("Unmarshal: %v", err) } return c}func main() { var c conf c.getConf() fmt.Println("path:" + c.Path)}

啟動(dòng)運(yùn)行后,輸出如下:

D:Go_Pathgosrcconfigmgr>go run config_yaml.gopath:/usr/local

1.《ini 如何讀取yaml,json,ini等配置文件》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無(wú)關(guān),侵刪請(qǐng)聯(lián)系頁(yè)腳下方聯(lián)系方式。

2.《ini 如何讀取yaml,json,ini等配置文件》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。

3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來(lái)源地址,http://f99ss.com/keji/346404.html