首页 > 其他 > 详细

golang 开源项目: 配置解析库--kity

时间:2019-07-21 16:34:57      阅读:122      评论:0      收藏:0      [点我收藏+]

在golang中,配置文件经常使用json格式。json格式的语法,有些繁琐,尤其是出现嵌套的时候,每一块都需要大括号包裹,看起来很臃肿。

本着简单易用的原则,个人开发了一个配置解析库kitty,已在github开源。

下面介绍配置解析库kitty的语法和使用方法。

基本语法

基本字符定义如下:

#           注释
=           key=value, 赋值
[]          区域,可以表示一个结构体
[[]]        区域的数组,表示结构体的数组

使用tab进行缩进,每缩进一个tab,就表示嵌套一级。

配置文件示例:

#comment like this
host = example.com
ipaddr = 192.168.1.56
port = 43
compression = on
max_conn = 68182

port_enable = true

order = 98, 652, 31, 599, 566, 12, 208


[monitor]
    enabled = true
    ip = 192.168.1.161
    [MAC]
        mac1 = AA:BB:CC
        mac2 = DD:EE:FF
    port = 3698
    cluster = 127.0.0.1, 192.168.16.163

[portal]
    enabled =true
    ip = 192.168.8.198
    port = 3036
    #array
    [[cluster]]
        addr = 10.0.1.160
        wgh = 20
    [[cluster]]
        addr = 10.12.201.187
        wgh = 10

废话不多说,直接看例子。

安装

go get github.com/yangeagle/kitty

例子

例子配置文件simple.conf:

#comment like this
host = example.com
ipaddr = 192.168.1.56
port = 43
compression = on

#comment like this

height = 8848.16, 693.254, 1.230, 996

# google
active = false


#array
cluster = 192.168.8.171, 192.168.8.170, 192.168.8.156


distance = 1896

temprature = 90.88

top_level = 9123456


max_conn = 68182


order = 98, 652, 31, 599, 566, 12, 208

示例代码:

package main

import (
    "fmt"

    "github.com/yangeagle/kitty"
)

type ConfigOption struct {
    Hostname string    `kitty:"host"`
    Addr     string    `kitty:"ipaddr"`
    PortNum  int       `kitty:"port"`
    Height   []float32 `kitty:"height"`
    Active   bool      `kitty:"active"`
    Clusters []string  `kitty:"cluster"`
    Dist     int       `kitty:"distance"`
    Temp     float64   `kitty:"temprature"`
    TopLevel *int      `kitty:"top_level"`
    NumConn  int       `kitty:"max_conn"`
    Order    []int     `kitty:"order"`
}

const configFile = "simple.conf"

func main() {

    confParser := kitty.NewConfig()

    err := confParser.ParseFile(configFile)
    if err != nil {
        fmt.Println("ParseFile failed:", err)
        return
    }

    confOption := new(ConfigOption)

    err = confParser.Unmarshal(confOption)
    if err != nil {
        fmt.Println("Unmarshal failed:", err)
        return
    }

    fmt.Println("Hostname:", confOption.Hostname)
    fmt.Println("Addr:", confOption.Addr)
    fmt.Println("Port:", confOption.PortNum)
    fmt.Println("Height:", confOption.Height)
    fmt.Println("Active:", confOption.Active)
    fmt.Println("Clusters:", confOption.Clusters)
    fmt.Println("Dist:", confOption.Dist)
    fmt.Println("Temp:", confOption.Temp)
    fmt.Println("TopLevel:", *confOption.TopLevel)
    fmt.Println("NumConn:", confOption.NumConn)
    fmt.Println("Order:", confOption.Order)
}

以上是配置解析代码库kitty使用方法,如果想了解更多,请访问项目地址:https://github.com/yangeagle/kitty

欢迎使用,如果你觉得不错,欢迎加星:)

golang 开源项目: 配置解析库--kity

原文:https://www.cnblogs.com/lanyangsh/p/11221547.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!