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

标签 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 

我怎样才能在 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 并将其传递给库 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 before 来解析配置,如所述 here .但是这个 gjson 库似乎是我正在搜索的。

关于go - 如何从 Go 中的文件中读取配置键/值对?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56093460/

相关文章:

go - 问题解析yaml文件

performance - 如果 big.Int 为 0,还有另一种测试方法吗?

linux - 无限循环与Cron工作

mysql - Golang mysql 客户端 DB.Query 方法不重新编码 utf-8 编码的字符

go - 代理 exec.Cmd Stdout/Stderr 不丢失 TTY

go - 如果这个函数的调用者已经完成,golang 阻塞函数会发生什么?

go - VSCODE 无法在 go 模块中安装工具

sql - gorp 更新未更新

go - 如何拆分传递给方法的接口(interface)

csv - 如何在 golang 中将 UUID 原始 16 字节写入 CSV?