配置文件在应用程序开发生命周期中发挥着重要作用。我们在多个环境中构建和部署应用程序,每个环境都必须需要一组特定的配置才能运行。

在多个环境中运行应用程序需要正确设置配置。

Golang 构建了整个应用程序的单个二进制文件,可以在特定环境下运行,无论是 linux 二进制文件还是 windows 二进制文件。

随着 Golang v1.16 的发布,嵌入功能也发布了,我们可以在构建二进制文件本身的同时将配置文件挂载到程序中的结构上,我们不需要显式发送配置文件。

读取配置文件

下面的代码片段可以帮助您使用 embed 包读取配置文件。

应用结构

[图像](https://res.cloudinary.com/practicaldev/image/fetch/s--d0T60k3f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads .s3.amazonaws.com/uploads/articles/ic3mu0nt3gviyfv7g03e.png)

config.yaml

name: Test_User
age: 73

进入全屏模式 退出全屏模式

main.go

pacakge main

import (
    ...
    <imports>
)

//go:embed config.yaml
var config embed.FS

type Conf struct {
    Name string `yaml:"name"`
    Age  int    `yaml:"name"`
}

func main() {
    var configs Conf
    configs.readConfig()
    fmt.Println(configs)
}

func (conf *Conf) readConfig() *Conf {
    yamlFile, err := config.ReadFile("config.yaml")
    if err != nil {
        log.Fatalln(err)
    }
    err = yaml.Unmarshal(yamlFile, &conf)
    if err != nil {
        log.Fatalln(err)
    }
    return conf
}

进入全屏模式 退出全屏模式

构建二进制文件,我们无需担心在任何平台上部署我们的应用程序时发送 config.yaml。