我正在try 使用具有url字段的配置文件,并且我想要封送和反封送此类型. 文档指出,我可以定制marshal function.
在这个Golangplayground 中,您可以看到定制的解组函数运行良好,但定制的编组函数无法正常工作:
type YAMLURL struct {
*url.URL
}
func (j *YAMLURL) UnmarshalYAML(unmarshal func(interface{}) error) error {
fmt.Println("custom unmarshal function")
var s string
err := unmarshal(&s)
if err != nil {
return err
}
url, err := url.Parse(s)
j.URL = url
return err
}
func (j *YAMLURL) MarshalYAML() (interface{}, error) {
fmt.Println("custome marshal")
return j.String(), nil
}
https://go.dev/play/p/24JbJEhi1Q8个
我也不知道原因 谢谢