go如何读取yaml配置文件?

宅哥聊构架 后端 2024-08-26

go如何读取yaml配置文件?

前言

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

go安装yaml组件

使用以下命令安装依赖包arduino

代码解读
复制代码
go get gopkg.in/yaml.v3

yaml使用

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

go如何读取yaml配置文件?配置文件内容如下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) }

结果为:

go如何读取yaml配置文件?使用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配置文件中,易于程序维护,可以提高开发效率,但是程序技术很多,每个人开发习惯不同,在开发中,根据个人喜好开发

转载来源:https://juejin.cn/post/7302322661958139940

Apipost 私有化火热进行中

评论