分享
  1. 首页
  2. 文章

PhalGo-Viper获取配置

喵了个咪_ · · 4844 次点击 · · 开始浏览
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

PhalGo-Viper获取配置

viper项目地址:https://github.com/spf13/viper

什么是viper

viper是国外大神**spf13**编写的开源配置解决方案,viper拥有一下功能以及特性如下:

  • 设置默认值
  • 从JSON,toml YAML,HCl,和java属性配置文件
  • 从环境变量env读取值
  • 读缓冲区
  • 远程读取配置文件
  • key不区分大小写

为什么用viper

viper不用担心你的文件格式,可以获取环境变量,也可以从远端获取配置文件,并且还有缓冲机制,功能非常棒非常**牛逼**,能满足不同的对配置文件的使用的要求,所以PhalGo采用viper来解决配置问题

初始化Config

PhalGo追求最简单的使用各个组件所以viper我们只需要初始化就可以开始使用,我们只需要调用**NewConfig**函数需要你传入两个参数,一个是你文件相对于项目目录的相对路径,比如我在项目目录下建立的/conf文件目录就需要填写conf,第二个就是配置文件文件名,只需要名称即可,可以不用输入后缀viper会自动识别.

//初始化配置文件
phalgo.NewConfig("conf", "sys")

比如我们创建了一个**sys.toml**文件内容如下:

强烈推荐使用toml格式,toml格式介绍:http://mlworks.cn/posts/introduction-to-toml/

[system]
port = ":1234"
[dbDefault]
dbHost = "localhost" #数据库连接地址
dbName = "phalgo" #数据库名称
dbUser = "root" #数据库用户名
dbPasswd = "" #数据库密码
dbPort = "3306" #数据库端口号
dbOpenconns_max = 20 #最大连接数
dbIdleconns_max = 0 #最大空闲连接
dbType = "mysql" #数据库类型

我们就可以简单的使用

phalgo.Config.GetString("system.port") #返回一个string类型的":1234"

phalgo.Config和**"github.com/spf13/viper"**是等价的,所以可以通过phalgo.Config来调用viper提供的方法

Config详解

设置默认值

phalgo.Config.SetDefault("ContentDir", "content")
phalgo.Config.SetDefault("LayoutDir", "layouts")
phalgo.Config.SetDefault("Taxonomies", map[string]string{"tag": "tags", "category": "categories"})

获取不同类型配置

  • phalgo.Config.Get(key string) : interface{}
  • phalgo.Config.GetBool(key string) : bool
  • phalgo.Config.GetFloat64(key string) : float64
  • phalgo.Config.GetInt(key string) : int
  • phalgo.Config.GetString(key string) : string
  • phalgo.Config.GetStringMap(key string) : map[string]interface{}
  • phalgo.Config.GetStringMapString(key string) : map[string]string
  • phalgo.Config.GetStringSlice(key string) : []string
  • phalgo.Config.GetTime(key string) : time.Time
  • phalgo.Config.GetDuration(key string) : time.Duration
  • phalgo.Config.IsSet(key string) : bool

获取多级参数

viper支持获取配置的层级关系,在每个key之间通过"."分割机制,比如上面演示的

phalgo.Config.GetString("system.port")

就是获取的二级参数

更多

viper提供很多有意思的功能,可以通过开篇viper项目地址进行了解


有疑问加站长微信联系(非本文作者)

本文来自:云栖社区

感谢作者:喵了个咪_

查看原文:PhalGo-Viper获取配置

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

关注微信
4844 次点击
添加一条新回复 (您需要 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传

用户登录

没有账号?注册
(追記) (追記ここまで)

今日阅读排行

    加载中
(追記) (追記ここまで)

一周阅读排行

    加载中

关注我

  • 扫码关注领全套学习资料 关注微信公众号
  • 加入 QQ 群:
    • 192706294(已满)
    • 731990104(已满)
    • 798786647(已满)
    • 729884609(已满)
    • 977810755(已满)
    • 815126783(已满)
    • 812540095(已满)
    • 1006366459(已满)
    • 692541889

  • 关注微信公众号
  • 加入微信群:liuxiaoyan-s,备注入群
  • 也欢迎加入知识星球 Go粉丝们(免费)

给该专栏投稿 写篇新文章

每篇文章有总共有 5 次投稿机会

收入到我管理的专栏 新建专栏