golang讀取yaml配置文件的示例代碼
前言
在項目開發(fā)中,經(jīng)常需要把一些配置文件常量提取到統(tǒng)一配置文件進行維護,因為這樣對于改變量以及維護非常方便,對于Java的Sringboot項目,有applocation.properties或者yml或者yaml等文件,go項目開發(fā)中,可以把需要維護的常量或者配置提取到y(tǒng)aml文件,因為YAML 的語法和其他高級語言類似,并且可以簡單表達清單、散列表,標量等數(shù)據(jù)形態(tài),對于項目修改配置非常方便
go安裝yaml組件
使用以下命令安裝依賴包
go get gopkg.in/yaml.v3
yaml使用
在項目中創(chuàng)建test.yaml配置文件

配置文件內容如下
hello: name: 127.0.0.1 age: 3306 redis: host: 127.0.0.1 port: 6379 password: 123456
讀取yaml內容
使用程序讀取yaml配置文件內容,內容如下:
package main
import (
"fmt"
"gopkg.in/yaml.v3"
"os"
)
type Config struct {
Hello `yaml:"hello"`
Redis `yaml:"redis"`
}
type Hello struct {
Name string `yaml:"name"`
Age int `yaml:"age"`
}
type Redis struct {
Host string `yaml:"host"`
Port int `yaml:"port"`
Password string `yaml:"password"`
}
func main() {
dataBytes, err := os.ReadFile("test.yaml")
if err != nil {
fmt.Println("讀取文件失敗:", err)
return
}
fmt.Println("yaml 文件的內容:\n", string(dataBytes))
config := Config{}
err = yaml.Unmarshal(dataBytes, &config)
if err != nil {
fmt.Println("解析 yaml 文件失?。?, err)
return
}
fmt.Printf("config內容為:\n", config)
mp := make(map[string]any, 2)
err = yaml.Unmarshal(dataBytes, mp)
if err != nil {
fmt.Println("解析 yaml 文件失?。?, err)
return
}
fmt.Println("內容為:", mp)
}結果為:

使用yaml可以指定對應配置文件名稱
go創(chuàng)建yaml文件
go也可以通過程序生成yaml文件,程序如下
package main
import (
"fmt"
"gopkg.in/yaml.v3"
"os"
)
type Config struct {
Hello `yaml:"hello"`
Redis Redis `yaml:"redis"`
}
type Hello struct {
Name string `yaml:"name"`
Age int `yaml:"age"`
}
type Redis struct {
Host string `yaml:"host"`
Port int `yaml:"port"`
Password string `yaml:"password"`
}
func main() {
var data = Config{
Hello: Hello{
Name: "aaa",
Age: 12,
},
Redis: Redis{
Host: "127.0.0.1",
Port: 6379,
Password: "121321",
},
}
file, err := os.Create("./1.yaml")
defer func(file *os.File) {
err := file.Close()
if err != nil {
}
}(file)
if err != nil {
fmt.Println("創(chuàng)建文件失敗:", err)
return
}
// 創(chuàng)建編碼器
encoder := yaml.NewEncoder(file)
err = encoder.Encode(&data)
if err != nil {
fmt.Println("Error encoding YAML:", err)
return
}
fmt.Println("創(chuàng)建成功")
}總結
gopkg.in/yaml.v3 是一個功能強大的 Go 庫,用于解析和生成 YAML 數(shù)據(jù),在開發(fā)中,可以將配置提取到y(tǒng)aml配置文件中,易于程序維護,可以提高開發(fā)效率,但是程序技術很多,每個人開發(fā)習慣不同,在開發(fā)中,根據(jù)個人喜好開發(fā)
到此這篇關于golang讀取yaml配置文件的示例代碼的文章就介紹到這了,更多相關go讀取yaml配置文件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
解決Go中攔截HTTP流數(shù)據(jù)時字段丟失的問題
在開發(fā)高并發(fā)的Web應用時,尤其是在處理HTTP代理和流數(shù)據(jù)攔截的場景下,遇到數(shù)據(jù)丟失的問題并不罕見,最近,在一個項目中,我遇到了一個棘手的問題:在攔截并轉發(fā)HTTP流數(shù)據(jù)的過程中,某些數(shù)據(jù)字段因為處理過快而被丟失,所以本文給大家介紹如何解決這個問題2024-08-08
gin使用自定義結構綁定表單數(shù)據(jù)的示例代碼
這篇文章主要介紹了gin使用自定義結構綁定表單數(shù)據(jù)的示例代碼,代碼簡單易懂,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-11-11
idea搭建go環(huán)境實現(xiàn)go語言開發(fā)
這篇文章主要給大家介紹了關于idea搭建go環(huán)境實現(xiàn)go語言開發(fā)的相關資料,文中通過圖文介紹以及代碼介紹的非常詳細,對大家學習或者使用go具有一定的參考借鑒價值,需要的朋友可以參考下2024-01-01
golang復制文件夾移動到另一個文件夾實現(xiàn)方法詳解
這篇文章主要為大家介紹了golang復制文件夾并移動到另一個文件夾實現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-07-07
Go語言 channel如何實現(xiàn)歸并排序中的merge函數(shù)詳解
這篇文章主要給大家介紹了關于Go語言 channel如何實現(xiàn)歸并排序中merge函數(shù)的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-02-02

