我将使用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/