配置文件

概述

一般程序启动的时候需要通过静态配置文件加载各种配置,go-zero 目前支持以下四种后缀名的配置文件:

  • *.json
  • *.toml
  • *.yaml
  • *.yml

此外,go-zero 还支持从环境变量中加载配置,且环境变量的优先级高于静态配置文件。

本章将会演示 go-zero 如何加载静态配置。

任务目标

  1. 学会如何定义一个配置。
  2. 从静态文件中加载配置。

准备条件

  1. 完成 golang 安装

定义 Config

  1. type Config struct {
  2. Name string
  3. Host string `json:",default=0.0.0.0"`
  4. Port int
  5. }

如上,我们定义了一个 Config struct ,里面包含几个字段,服务名称,监听地址,端口号。

定义配置路径

  1. var f = flag.String("f", "config.yaml", "config file")

我们一般希望可以在启动的时候指定配置文件的路径,所以我们定一个 flag 用于接受配置文件的路径。

编写配置文件

我们使用 yaml 格式当做实例,生成 config.yaml 文件。写入如下内容

  1. Name: demo
  2. Host: 127.0.0.1
  3. Port: 6370

加载配置

  1. flag.Parse()
  2. var c Config
  3. conf.MustLoad(*f, &c)
  4. println(c.Name)

至此我们将 config.yaml 中的配置文件加载到 Config 中来了。我们后续可以在程序中使用我们的配置变量

完整实例

  1. package main
  2. import (
  3. "flag"
  4. "github.com/zeromicro/go-zero/core/conf"
  5. )
  6. type Config struct {
  7. Name string
  8. Host string `json:",default=0.0.0.0"`
  9. Port int
  10. }
  11. var f = flag.String("f", "config.yaml", "config file")
  12. func main() {
  13. flag.Parse()
  14. var c Config
  15. conf.MustLoad(*f, &c)
  16. // conf.MustLoad(*f, &c,conf.UseEnv()) // 额外从环境变量中加载配置
  17. println(c.Name)
  18. }