3

我将使用此存储库解析 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

4

1 回答 1

10

github.com/hashicorp/hcl/hcl/parser 是一个低级包。请改用高级 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。

于 2018-04-12T13:07:36.073 回答