源码
github.com/zsl10/gin-e…
功能
- 根据不同环境读取不同配置信息
- 读取父子分区:如果某个键在子分区中不存在,则会去它的父分区中再次寻找
实例
[env]
value = product.dev
[product]
runMode = product
addr = :8080
[product.dev]
runMode = dev
[product.test]
runMode = test
package main
import (
"github.com/gin-gonic/gin"
"github.com/go-ini/ini"
"github.com/spf13/pflag"
"log"
"net/http"
)
var env = pflag.StringP("env", "e", "", "set environment")
func main() {
pflag.Parse()
var env = *env
cfg, err := ini.Load("conf/app.ini")
if err != nil {
log.Fatalf("Fail to parse 'conf/app.ini': %v", err)
}
if env == "" {
a := cfg.Section("env")
b, _ := a.GetKey("value")
env = b.String()
}
section := cfg.Section(env)
addr, err := section.GetKey("addr")
runMode, err := section.GetKey("runMode") //dev、test环境可以从父分区获取
r := gin.Default()
r.GET("test/config", func(c *gin.Context) {
c.JSON(http.StatusOK, gin.H{
"addr": addr.String(),
"mode": runMode.String(),
})
})
r.Run(addr.String())
}
// 1、使用命令行传参设置环境
go run main.go --env=product.dev
// 2、读取配置文件的默认环境配置
fresh
curl 127.0.0.1:8080/test/config
{"addr":":8080","mode":"dev"}