Beego学习笔记——Config
本文为转载,原文地址:Beego学习笔记——Config
配置文件解析
这是一个用来解析文件的库,它的设计思路来自于database/sql
,目前支持解析的文件格式有ini、json、xml、yaml,可以通过如下方式进行安装:
- go get github.com/astaxie/beego/config
如何使用
首先初始化一个解析器对象
- iniconf, err := NewConfig("ini", "testini.conf")
- if err != nil {
- t.Fatal(err)
- }
然后通过对象获取数据
- iniconf.String("appname")
解析器对象支持的函数有如下:
- Set(key, val string) error
- String(key string) string
- Int(key string) (int, error)
- Int64(key string) (int64, error)
- Bool(key string) (bool, error)
- Float(key string) (float64, error)
- DIY(key string) (interface{}, error)
- appname="beegotest"
- pageoffset=
- package utils
- import (
- "github.com/astaxie/beego/config"
- "fmt"
- )
- var BConfig config.Configer
- func init(){
- var err error
- BConfig, err = config.NewConfig("ini", "app.conf")
- if err != nil{
- fmt.Println("config init error:", err)
- }
- }
在这里,我们需要引入"github.com/astaxie/beego/config”
- func GetConfig(args []string)int{
- if args[] == "-int"{
- intConf, err := utils.BConfig.Int(args[])
- if err != nil{
- fmt.Println("get type of int from config error:",err)
- }else {
- fmt.Println(intConf)
- }
- }else if args[] == "-int64"{
- int64Conf, err := utils.BConfig.Int64(args[])
- if err != nil{
- fmt.Println("get type of int64 from config error:",err)
- }else {
- fmt.Println(int64Conf)
- }
- }else if args[] == "-bool"{
- boolConf, err := utils.BConfig.Bool(args[])
- if err != nil{
- fmt.Println("get type of bool from config error:",err)
- }else {
- fmt.Println(boolConf)
- }
- }else if args[] == "-float"{
- floatConf, err := utils.BConfig.Float(args[])
- if err != nil{
- fmt.Println("get type of flaot from config error:",err)
- }else {
- fmt.Println(floatConf)
- }
- }else if args[] == "-int64"{
- intConf, err := utils.BConfig.Int(args[])
- if err != nil{
- fmt.Println("get type of int from config error:",err)
- }else {
- fmt.Println(intConf)
- }
- }else {
- fmt.Println(utils.BConfig.String(args[]))
- }
- return
- }
- func SetConfig(args []string)int{
- err := utils.BConfig.Set(args[], args[])
- if err != nil{
- fmt.Println("set config error:", err)
- }else{
- fmt.Println("set config success")
- }
- return
- }
main.go文件中也需要做适当的调整,来调用上面两个函数。完整的代码如下:
- package main
- import (
- "bufio"
- "fmt"
- "os"
- "strings"
- _"beegotest/utils"
- "beegotest/utils"
- )
- func main() {
- r := bufio.NewReader(os.Stdin)
- handlers := GetCommandHandlers()
- Help(nil)
- for {
- fmt.Print("Command> ")
- b, _, _ := r.ReadLine()
- line := string(b)
- tokens := strings.Split(line, " ")
- if handler, ok := handlers[tokens[]]; ok{
- ret := handler(tokens)
- if ret != {
- break
- }
- }else {
- fmt.Println("Unknown Command:", tokens[])
- }
- }
- }
- func GetCommandHandlers() map[string]func(args []string) int {
- return map[string]func([]string) int{
- "help": Help,
- "h": Help,
- "quit" : Quit,
- "q":Quit,
- "getconf":GetConfig,
- "setconf":SetConfig,
- }
- }
- func Help(args []string) int {
- fmt.Println(`Command:
- help(h)
- quit(q)
- getconf -type key
- setconf key val
- `)
- return
- }
- func Quit(args []string) int{
- return
- }
- func GetConfig(args []string)int{
- if args[] == "-int"{
- intConf, err := utils.BConfig.Int(args[])
- if err != nil{
- fmt.Println("get type of int from config error:",err)
- }else {
- fmt.Println(intConf)
- }
- }else if args[] == "-int64"{
- int64Conf, err := utils.BConfig.Int64(args[])
- if err != nil{
- fmt.Println("get type of int64 from config error:",err)
- }else {
- fmt.Println(int64Conf)
- }
- }else if args[] == "-bool"{
- boolConf, err := utils.BConfig.Bool(args[])
- if err != nil{
- fmt.Println("get type of bool from config error:",err)
- }else {
- fmt.Println(boolConf)
- }
- }else if args[] == "-float"{
- floatConf, err := utils.BConfig.Float(args[])
- if err != nil{
- fmt.Println("get type of flaot from config error:",err)
- }else {
- fmt.Println(floatConf)
- }
- }else if args[] == "-int64"{
- intConf, err := utils.BConfig.Int(args[])
- if err != nil{
- fmt.Println("get type of int from config error:",err)
- }else {
- fmt.Println(intConf)
- }
- }else {
- fmt.Println(utils.BConfig.String(args[]))
- }
- return
- }
- func SetConfig(args []string)int{
- err := utils.BConfig.Set(args[], args[])
- if err != nil{
- fmt.Println("set config error:", err)
- }else{
- fmt.Println("set config success")
- }
- return
- }
运行结果如下:
Beego学习笔记——Config的更多相关文章
- Beego学习笔记——开始
beego简介 beego是一个快速开发Go应用的http框架,他可以用来快速开发API.Web.后端服务等各种应用,是一个RESTFul的框架,主要设计灵感来源于tornado.sinatra.fl ...
- Beego学习笔记——Logs
日志处理 这是一个用来处理日志的库,它的设计思路来自于database/sql,目前支持的引擎有file.console.net.smtp,可以通过如下方式进行安装: go get github.co ...
- Beego学习笔记
Beego学习笔记 Go 路由(Controller) 路由就是根据用户的请求找到需要执行的函数或者controller. Get /v1/shop/nike ShopController Get D ...
- Beego 学习笔记15:布局页面
页面布局 1> 一个html页面由:head部分,body部分,内部css,内部js,外联css,外联的js这几部分组成.因此,一个布局文件也就需要针对这些进行拆分. 2> ...
- Beego 学习笔记14:Session控制
Session控制 1> Session常用来作为全局变量使用,比如记录当前登录的用户,或者页面之间传递数据使用. 2> Beego框架内置了 session 模块,目前 ...
- Beego学习笔记四:编写Model
MVC实践一:编写模型 1> 打开mysql数据库,设计表的结构 <1>登录mysql数据库,如下 <2>这三个标注的参数皆有用,需要谨记. <3>创 ...
- beego学习笔记一:创建第一个beego Web项目 转
前提工作 环境搭建,可以参考如下两篇教程:搭建Go语言环境1搭建Go语言环境2 安装beego beego 的安装是典型的 Go 安装包的形式: go get github.com/astaxie/b ...
- beego学习笔记(4):开发文档阅读(6)
beego的响应流程: 1.监听的端口接收数据,默认是8080端口. 2.用户请求到达8080端口后,开始数据处理流程. 3.初始化CONTEXT对象.判断是否是WEBSOCKET请求,如果是,设置I ...
- beego学习笔记(4):开发文档阅读(5)
controller的逻辑: 我们看下面的代码,就知道怎么传值的: import ( "github.com/astaxie/beego" ) type MainControlle ...
随机推荐
- 用邻接表或vector实现存边以及具体如何调用[模板]
存边: 对于指针实现的邻接表: struct edge{ int from,next,to,w; }E[maxn]; int head[maxn],tot=0;//head初始化为-1: void a ...
- CoreSeek Sphinx 安装
1.centos Sphinx 先安装 yum install postgresql-libs yum install unixODBC CoreSeek 安装: http://www.coresee ...
- ios开发实践之UIDatePicker(已对之前无法解决的问题做了解答)
需求:要做一个生日选择的控件,但除了选择之外还需要自定义几个控件,跟生日选择控件组合一起. 做法:自定义了一个UIImageView,并且作为背景.在这个背景view上再添加其他button和时间选择 ...
- ios学习笔记第三天之UI控件
- Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例
Ubuntu13.04 Eclipse下编译安装Hadoop插件及使用小例 一.在Eclipse下编译安装Hadoop插件 Hadoop的Eclipse插件现在已经没有二进制版直接提供,只能自己编译. ...
- C++内存中的封装、继承、多态(上)
C++内存中的封装.继承.多态(上) 继我的上一篇文章:浅谈学习C++时用到的[封装继承多态]三个概念 此篇我们从C++对象内存布局和构造过程来具体分析C++中的封装.继承.多态. 一.封装模型的内存 ...
- Java快速开发工具 WebBuilder 6.8发布
WebBuilder是一款开源的可视化Java Web应用开发和运行平台: 基于浏览器的集成开发环境,可视化和智能化的设计,能轻松完成常规应用和面向手机的移动应用开发: 高效.稳定和可扩展的特点,适合 ...
- 简单的HTTP过滤模块
简单的HTTP过滤模块 一.Nginx的HTTP过滤模块特征 一个请求可以被任意个HTTP模块处理: 在普通HTTP模块处理请求完毕并调用ngx_http_send_header()发送HTTP头部或 ...
- DNS:域名系统
DNS:域名系统 1.DNS DNS 是计算机域名系统(Domain Name System 或Domain Name Service) 的缩写,它是由解析器以及域名服务器组成的.域名服务器 ...
- 构建RESTful风格的WCF服务
构建RESTful风格的WCF服务 RESTful Wcf是一种基于Http协议的服务架构风格. 相较 WCF.WebService 使用 SOAP.WSDL.WS-* 而言,几乎所有的语言和网络平台 ...