使用 Viper 读取配置文件

安装

go get github.com/spf13/viper

编写配置文件

新建config.yml,填入配置信息,如下:

yml 复制代码
app:
	name: MyApp
	port: :3000

读取并初始化配置文件

新建config.go文件。

定义配置信息的结构

如下:

go 复制代码
// 定义配置结构
type Config struct {
	// App 包含应用程序的基本配置
	App struct {
		Name string // 应用程序名称
		Port string // 应用程序监听端口
	}
}
编写初始化配置的方法

如下:

go 复制代码
// 声明配置实例
var AppConfig *Config

// 从 config.yml 文件中读取配置并解析到 AppConfig 结构体中
func InitConfig() {
	// 设置配置文件名、文件类型、文件路径
	viper.SetConfigName("config")
	viper.SetConfigType("yml")
	viper.AddConfigPath("./config")

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

	// 初始化配置结构体
	AppConfig = &Config{}

	// 将配置解析到结构体中
	if err := viper.Unmarshal(AppConfig); err != nil {
		log.Fatalf("Failed to unmarshal config: %v", err)
	}
}

测试读取结果

在main.go中调用InitConfig方法,如下

go 复制代码
package main

import (
	"log"
	"simple-blog/config"
)

func main() {
	// 初始化配置
	config.InitConfig()

	// 读取配置文件并打印
	log.Printf("Config loaded: %+v", config.AppConfig.App.Port)
}

如果读取成功则控制台会打印出3000端口。

相关推荐
m0_639906944 小时前
Linux 操作系统入门:目录结构、服务排查常用命令、Shell 脚本基础
linux·运维·后端
holly就是我5 小时前
AI 编程助手为什么跑偏?用开源 ccglass 看清 Prompt、工具调用和 Token 消耗
人工智能·后端
鸿蒙开发5 小时前
共享 Schema 与 SchemaFactory
前端·后端·harmonyos
用户788477316345 小时前
小程序后端三选一:云开发、.NET WebAPI、Node,我按客户现状分了三种答案
后端
aiopencode5 小时前
局域网设备抓包怎么做?用 TraceEagle 抓电视、游戏机和 IoT 流量
后端·ios
智驭未来掌门人5 小时前
CLion 开发 Qt 项目的优势
后端
EnCi Zheng5 小时前
后端怎么把AI接口稳定安全低成本接进业务:超时重试、密钥隔离与成本熔断清单
人工智能·后端·安全·架构·api
Bazingga5 小时前
从一家酒店讲懂Docker
后端
南归北隐5 小时前
Spring AI Alibaba Graph框架实现MCP数据库查询实战
java·后端·spring ai·mcp·spring ai mcp
IT_陈寒5 小时前
刚解决一个 Java 并发问题,这坑踩得我怀疑人生
前端·人工智能·后端