我在 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
我怎样才能在 go 中实现同样的事情。我检查了Gonfig用于配置实现和构建结构。
实现与我在 Node 中所做的功能相同的功能应该是更好/最好的方法是什么?
最佳答案
好的。所以这就是我现在所做的。 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
并将其传递给库 gjson 的 function 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 before 来解析配置,如所述 here .但是这个 gjson 库似乎是我正在搜索的。
关于go - 如何从 Go 中的文件中读取配置键/值对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56093460/