Go 語言沒有內建解析 yaml 檔案的功能,實現 yaml 的解析可以使用第三方庫 gopkg.in/yaml.v2
和 gopkg.in/yaml.v3
。
下面以解析 config.yml
檔案為例,演示解析程式碼的過程。
使用 go get gopkg.in/yaml.v3
新增引用。
在 config 目錄下,新增檔案 config.yml
檔案,內容如下:
mongodb:
uri: "mongodb://localhost:27017" # MongoDB連線串
database: "testdb" # 資料庫名稱
posts_collection: "testcoll" # 儲存 Post 的集合
這裡定義了一個 mongodb
的配置,包含了連線、資料庫名稱和儲存集合名。
接著,對照上面的配置,定義 Config
結構
type Config struct {
MongoDB struct {
Database string `json:"database"`
PostCollection string `json:"post_collection"`
URI string `json:"uri"`
} `yaml:"mongodb"`
}
最後,建立 loadConfig
方法,讀取檔案並解析
func loadConfig() Config {
var conf Config
dir, err := os.Getwd()
if err != nil {
log.Fatalf("fail to get current directory: %v", err)
}
filename := path.Join(dir, "/config/config.yaml")
data, err := os.ReadFile(filename)
if err != nil {
log.Fatalf("failed to read config.yaml: %v", err)
}
if err = yaml.Unmarshal(data, &conf); err != nil {
log.Fatalf("failed to parse config.yaml: %v", err)
}
return conf
}
os.Getwd()
獲取當前工作目錄,然後使用 path.Join
拼接完整的檔名。
以上,就是 go 解析 yaml 檔案的方法。