我将使用this repository解析HCL配置文件。

package main

import (
    "fmt"
    hclParser "github.com/hashicorp/hcl/hcl/parser"
)

const (
    EXAMPLE_CONFIG_STRING = "log_dir = \"/var/log\""
)

func main() {
    // parse HCL configuration
    if astFile, err := hclParser.Parse([]byte(EXAMPLE_CONFIG_STRING)); err == nil {
        fmt.Println(astFile)
    } else {
        fmt.Println("Parsing failed.")
    }
}

在这种情况下,如何解析log_dir

最佳答案

github.com/hashicorp/hcl/hcl/parser是一个低级软件包。使用high-level API代替:

package main

import (
        "fmt"

        "github.com/hashicorp/hcl"
)

type T struct {
        LogDir string `hcl:"log_dir"`
}

func main() {
        var t T
        err := hcl.Decode(&t, `log_dir = "/var/log"`)
        fmt.Println(t.LogDir, err)
}

如果您真的想自己处理AST,也可以使用DecodeObject。

关于go - 任何人都可以帮助解析HCL吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49797290/

10-09 22:20