go项目实现通过配置文件进行配置项统一管理
转载请注明出处:
go项目中实现配置项统一管理,实现逻辑:将 配置项整理为一个json的数据结构,并保存到go.conf文件中,然后在go项目启动main方法中加载 go.conf 文件,读取go.conf 文件的json 数据结构,并进行反序列化为go的数据结构,从而在go项目中可以全局使用 go.conf 文件中的配置项。
实现:
首先,创建一个名为 go.conf
的 JSON 格式的配置文件,内容如下:
{ "database": { "host": "localhost", "port": 3306, "username": "root", "password": "password" }, "api": { "url": "https://api.example.com", "key": "abcdef123456" }, "logger": { "level": "info", "file": "/var/log/app.log" } }
接下来,在 Go 项目中,创建一个结构体来映射这些配置项:
package main import ( "encoding/json" "fmt" "io/ioutil" ) type Config struct { Database struct { Host string `json:"host"` Port int `json:"port"` Username string `json:"username"` Password string `json:"password"` } `json:"database"` API struct { URL string `json:"url"` Key string `json:"key"` } `json:"api"` Logger struct { Level string `json:"level"` File string `json:"file"` } `json:"logger"` } func main() { // 读取配置文件 configData, err := ioutil.ReadFile("go.conf") if err != nil { fmt.Println("无法读取配置文件:", err) return } // 将配置文件解析到 Config 结构体中 var config Config err = json.Unmarshal(configData, &config) if err != nil { fmt.Println("无法解析配置文件:", err) return } // 使用配置项 fmt.Println("数据库主机:", config.Database.Host) fmt.Println("数据库端口:", config.Database.Port) fmt.Println("API URL:", config.API.URL) fmt.Println("API 密钥:", config.API.Key) fmt.Println("日志级别:", config.Logger.Level) fmt.Println("日志文件:", config.Logger.File) }
在以上示例代码中,创建了一个名为 Config
的结构体来映射配置文件中的配置项。结构体的字段名和类型需要和配置文件保持一致。
在主函数中,我们使用相同的方式读取和解析配置文件。然后,可以直接访问 Config
结构体的成员来使用配置项。例如,config.Database.Host
可以获取数据库主机名,config.API.URL
可以获取 API 的 URL。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类