如何在golang中从yaml解组结构体内部的类型别名?

3z6pesqy  于 2023-01-28  发布在  Go
关注(0)|答案(1)|浏览(177)

我想要下面的yaml

kind: bar
name: baryaml

要在结构资源内解封的

type Kind int

const (
    KIND_FOO Kind = iota
    KIND_BAR
)

type Resource struct {
    Kind Kind
    Name string
}

有人能解释一下为什么下面的代码不能存储正确的类型,即使它被正确地解组了?
一个一个二个一个一个一个三个一个一个一个一个一个四个一个

k5ifujac

k5ifujac1#

感谢@JimB建议取消引用k指针:

func (k *Kind) UnmarshalYAML(value *yaml.Node) error {
    var kind string
    err := value.Decode(&kind)

    if err != nil {
        return err
    }

    switch kind {
    case "foo":
        *k = KIND_FOO
    case "bar":
        *k = KIND_BAR
    default:
        return fmt.Errorf("unknown kind: %s", kind)
    }

    fmt.Println("Unmarshaled kind:", *k)
    return nil
}

相关问题