使用 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端口。

相关推荐
要阿尔卑斯吗7 分钟前
提示词优化启示:为什么“按顺序输出“比“关键度评分“更有效
后端
她的男孩41 分钟前
后台接口加密别只会 HTTPS,ForgeAdmin 的 RSA + SM4/AES 源码拆解
后端·面试·开源
极光技术熊1 小时前
Spring AI 从入门到精通:构建你的 AI 开发知识体系
后端·github
程序员cxuan1 小时前
一句话,让你用上 GPT-5.6
人工智能·后端·程序员
远航_1 小时前
OpenSpec 完整详细介绍
前端·后端
AskHarries1 小时前
不用公网 IP,把 Windows 和 Linux 服务器放进同一个局域网:Tailscale 组网实战
后端
神奇小汤圆1 小时前
Java 的1 亿次对象创建:JVM 开启 / 关闭逃逸分析,GC 性能差距巨大
后端
tangdou3690986551 小时前
AI真好玩系列-2分钟快速了解DeepAgents | Quick Guide to DeepAgents in 2 Minutes
前端·javascript·后端
神奇小汤圆2 小时前
面试官:MySQL 为什么要是使用 MVCC?原理是什么?
后端
像我这样帅的人丶你还2 小时前
Java 后端详解(五):Redis 缓存
java·后端·全栈