go - yaml.v2 Unmarshaller 接口(interface)的有状态实现?

标签 go

这可能是文件路径问题,也可能是关于如何最好地实现接口(interface)的问题。

给定以下非常简单的 yaml:

name: MyYamlName
data: some/relative/path.txt

我想将它解码为以下结构:

type VerySimple struct {
    name string
    data io.Reader
}

我已经在使用 yaml.v2 library ,并且知道对于简单类型,我可以实现 Unmarshaller界面。但是,在我的程序中,我不能假设一个绝对根,data 字段中的相对路径基于该绝对根。

有没有一种方法可以实现 Unmarshaller 接口(interface)来传递工作目录,或者可能有一种不同的方法来处理 Go 中的相对路径?

最佳答案

API documentation 可以很清楚地看出这不受支持。支持它的自然方式,IMO,将使用解码器类型,类似于 json.Decoder类型。它可以使用根包含路径或要搜索的包含路径列表进行初始化。

already a request对于这样的功能。它确实提到了处理多个文档,这可能意味着包含一个包含路径,尽管尚未明确提及该特定功能。我建议在该线程中提供您的想法。

关于go - yaml.v2 Unmarshaller 接口(interface)的有状态实现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47731919/

相关文章:

php - 坚持使用 PHP 还是学习 Go-lang?

arrays - 如何在 Go 中获取 slice 的底层数组?

go - 使用 go/ast 包

go - Go/可选参数中的多个构造函数?

arrays - 将表示为字符串的字节数组转换为字节数组

Golang 计算器 -- 无法除以 0 错误

go - 为什么在 Go 中反射(reflect)错误类型的名称(或包路径)会导致 panic ?

encryption - GoLang 解密一个命令而不是执行它

go - 如何确定程序是在 Go 中构建为 32 位还是 64 位?

go - 使用 Windows 使用 golang 与 db2 服务器连接