我为Yaml文件定义了一个结构,如下所示:
type Service struct {
ServiceName string `yaml:"service_name"`
PipelineType PipelineType `yaml:"pipeline_type"`
}
在文件中,此结构以字符串形式出现:
service_name: service
pipeline_type: app
我的类型定义如下:
// PipelineType Pipeline Types
type PipelineType struct {
Value string
}
var (
AppPipeline = PipelineType{"app"}
...
)
由于类型声明,出现以下错误(预期):
line 4: cannot unmarshal !!str `app` into main.PipelineType
有没有办法告诉GoYAML,或者创建某种形式的构造函数以使用string(PipelineType)
或类似方法转换值?
或者,是否有一种“ GoYAML”友好的方式来做到这一点?
答案 0 :(得分:1)
尝试一下:
type Service struct {
ServiceName string `yaml:"service_name"`
PipelineType PipelineType `yaml:"pipeline_type"`
}
func (s *Service) myYml() *Service {
yamlFile, err := ioutil.ReadFile("service.yaml")
if err != nil {
log.Println(err.Error())
}
err = yaml.Unmarshal(yamlFile, s)
if err != nil {
log.Println(err.Error())
}
return s
}
获取:
var s Service
s.myYml()