Go 語言解析 yaml 檔案的方法

小邓發表於2024-10-31

Go 語言沒有內建解析 yaml 檔案的功能,實現 yaml 的解析可以使用第三方庫 gopkg.in/yaml.v2gopkg.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 檔案的方法。

相關文章