首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >golang & hcl配置文件问题

golang & hcl配置文件问题
EN

Stack Overflow用户
提问于 2020-09-02 00:03:35
回答 1查看 445关注 0票数 2

我编写了一个简单的go程序,使用viper在一个配置文件中读取。

代码语言:javascript
复制
package main 
import (
    "fmt"
    "log"

    "github.com/spf13/viper"
)     

func main() {
    viper.SetConfigType("hcl")

    // # first used file
    viper.AddConfigPath(".")
    viper.SetConfigName("example.hcl")

    err := viper.ReadInConfig()
    if err != nil {
            log.Fatal(err)
    }

    fmt.Println("host.address =", viper.GetString("host.address"))
    fmt.Println("host.port =", viper.GetString("host.port"))
    viper.Reset()
}

与./example.hcl

代码语言:javascript
复制
"host" = {
 "address" = "localhost"
 "port" = "5799" 
}   

程序的输出是

代码语言:javascript
复制
host.address = 
host.port =

如果我将配置文件的名称切换到.yaml (并相应地调整代码)并使用

代码语言:javascript
复制
{
"host": {
    "address": "localhost",
    "port": 5799
}
}

密码有效。有人对我做错了什么有建议吗?还是毒蛇不适用于嵌入的hcl字段?

EN

回答 1

Stack Overflow用户

发布于 2021-12-23 05:06:32

Viper & HCL没有很好的集成和发挥,就像你的例子一样

您可以使用树袋熊作为解决上述问题的替代方法。

看这个例子。

代码语言:javascript
复制
package main
import (
  "fmt"
  "github.com/knadh/koanf"
  "github.com/knadh/koanf/parsers/hcl"
  "github.com/knadh/koanf/providers/file"
)

var Conf = koanf.New(".")

func main() {
   Conf.Load(file.Provider("/etc/app/config.hcl"),hcl.Parser(true))

   fmt.Println("host.address =", Conf.Get("host.address"))
   fmt.Println("host.port =", Conf.Get("host.port"))
  
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63696952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档