如何从Go中的文件中读取配置键/值对?

时间:2019-05-11 19:07:46

标签: go

我在Node.js中有一个低延迟的应用程序,正在用Go编写新的基线。

节点中的应用使用配置和一些键/值对。

在config / index.js中

var config = {};
config.app = {
    port:9000
};
config.log= {
    level:"error"
}
module.exports=config;

还有另一个文件config / key_values.js,其中包含键/值对,并且每隔几分钟刷新一次。

module.exports.key_values= {
"key1":"value1",
"key2":"value2",
}

要阅读本文,我只使用下面的代码。

let config = require('./config/index');
let keys_vals = require('./config/key_values.js');

console.log('port', config.app.port); //port 9000
console.log('key1 data -->', keys_vals.key_values['key1']); //key1 data --> value1 

我该如何在旅途中实现同一目标。我已经检查了Gonfig的配置实现以及构建结构。

要实现与Node相同的功能,最好/最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

好。所以这是我现在所做的。 config / index.js现在是带有内容的config / config.json

{
    "app":{"port":9000},
    "log":{"level":"error"}
}

和config / key_values.js是config / key_values.json

{
    "key1":"value1",
    "key2":"value2"
}

要读取此值,我只是将文件读取为[]byte并将其传递到库gjsonfunction GetBytes

所以最终代码如下:

    configFile, err := os.Open("config/config.json")
    byteValue, _ := ioutil.ReadAll(configFile)
    result := gjson.GetBytes(byteValue, "app.port")
    fmt.Println(result) //prints 9000

与键值文件相同。

    configFile, err := os.Open("config/key_values.json")
    byteValue, _ := ioutil.ReadAll(configFile)
    result := gjson.GetBytes(byteValue, "key1")
    fmt.Println(result) //prints value1

还尝试使用struct之前按照here解析配置。但是这个gjson库似乎正是我要搜索的。