go如何读取yaml配置文件?

前言

在项目开发中,经常需要把一些配置文件常量提取到统一配置文件进行维护,因为这样对于改变量以及维护非常方便,对于Java的Sringboot项目,有applocation.properties或者yml或者yaml等文件,go项目开发中,可以把需要维护的常量或者配置提取到yaml文件,因为YAML 的语法和其他高级语言类似,并且可以简单表达清单、散列表,标量等数据形态,对于项目修改配置非常方便

go安装yaml组件

使用以下命令安装依赖包

 

arduino

代码解读

复制代码

go get gopkg.in/yaml.v3

yaml使用

在项目中创建test.yaml配置文件

image.png

配置文件内容如下

 

yaml

代码解读

复制代码

hello: name: 127.0.0.1 age: 3306 redis: host: 127.0.0.1 port: 6379 password: 123456

读取yaml内容

使用程序读取yaml配置文件内容,内容如下:

 

go

代码解读

复制代码

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) }

结果为:

image.png

使用yaml可以指定对应配置文件名称

go创建yaml文件

go也可以通过程序生成yaml文件,程序如下

 

go

代码解读

复制代码

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("创建文件失败:", err) return } // 创建编码器 encoder := yaml.NewEncoder(file) err = encoder.Encode(&data) if err != nil { fmt.Println("Error encoding YAML:", err) return } fmt.Println("创建成功") }

总结

gopkg.in/yaml.v3 是一个功能强大的 Go 库,用于解析和生成 YAML 数据,在开发中,可以将配置提取到yaml配置文件中,易于程序维护,可以提高开发效率,但是程序技术很多,每个人开发习惯不同,在开发中,根据个人喜好开发

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值