GO语言使用viper包实现读取yaml配置文件

概要

Viper 是一个流行的 Go 配置管理库,它可以读取各种格式的配置文件,包括 YAML。下面是一个使用 Viper 读取 YAML 配置文件的基本示例。

1. viper的安装

go get github.com/spf13/viper

2. 准备 YAML 配置文件

准备一个config.yaml配置文件

server:
  address: "localhost"
  port: 8080

database:
  user: "dbuser"
  password: "dbpass"
  name: "dbname"

3. 读取YAML配置文件

定义结构体

type Config struct {
    Server struct {
        Address string `mapstructure:"address"`
        Port    int    `mapstructure:"port"`
    } `mapstructure:"server"`
    Database struct {
        User     string `mapstructure:"user"`
        Password string `mapstructure:"password"`
        Name     string `mapstructure:"name"`
    } `mapstructure:"database"`
}

读取配置信息并反解到结构体中

// 设置 Viper 的配置文件名和路径
    viper.SetConfigName("config") // 不需要文件扩展名
    viper.SetConfigType("yaml")   // 配置文件的类型
    viper.AddConfigPath(".")      // 配置文件的路径

    // 读取配置文件
    if err := viper.ReadInConfig(); err != nil {
        log.Fatalf("Error reading config file, %s", err)
    }

    // 定义结构体
    var config Config

    // 反解配置到结构体
    if err := viper.Unmarshal(&config); err != nil {
        log.Fatalf("Unable to decode into struct, %v", err)
    }

    // 打印配置
    fmt.Printf("Server Address: %s\n", config.Server.Address)
    fmt.Printf("Server Port: %d\n", config.Server.Port)
    fmt.Printf("Database User: %s\n", config.Database.User)
    fmt.Printf("Database Password: %s\n", config.Database.Password)
    fmt.Printf("Database Name: %s\n", config.Database.Name)

小结

viper.Unmarshal 方法非常强大,可以将配置文件中的内容直接映射到 Go 结构体中,使得配置管理变得简单且类型安全。通过这种方式,你可以轻松处理复杂的配置文件。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值