日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

如何讀取yaml,json,ini等配置文件

 

實(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 main
import (
 "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.go
path:/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 = true
path = /usr/local # another comment

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

3. 新建 config_ini.go:

  •  
package main
import (
 "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.go
true
/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í)沒有給我們提供操作yaml的標(biāo)準(zhǔn)庫(kù),但是github上有很多優(yōu)秀的第三方庫(kù)開源給我們使用。

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

  •  
enabled: true
path: /usr/local

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

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

  •  
package main
import (
 "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.go
path:/usr/local

分享到:
標(biāo)簽:json
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定