Go问答 golang 如何保存一个含有函数类型字段的结构体对象

allen727 · 2020年11月01日 · 最后由 allen727 回复于 2020年11月09日 · 257 次阅读
type Demo struct {
    OnHtml func(name string) error
}

demo := &Demo{OnHtml: func(name string) error {
        fmt.Println(name + " asd")
        return nil
    }}

现在是否能有办法序列化 demo 这个对象保存到数据库呢?

更多原创文章干货分享,请关注公众号
  • 加微信实战群请加微信(注明:实战群):gocnio
type Demo struct {
    OnHtml func(name string) error
}

func (d Demo) MarshalJSON() ([]byte, error) {
    return []byte(`{"name":"onHtml"}`), nil
}

func (d Demo) UnmarshalJSON([]byte) error {
    panic("implement me")
}

func main() {
    demo := &Demo{OnHtml: func(name string) error {
        fmt.Println(name + " asd")
        return nil
    }}

    bs, err := json.Marshal(demo)
    if err != nil {
        print(err.Error())
    }
    print(string(bs))
}

你好,请问这个怎么理解呢?

allen727 回复

就是对你这个结构体实现 Marshaler 接口 这样在 json.Marshal 时就会按照你自定义的逻辑序列化了

spf 回复

就是不知道如何进行序列化函数类型的字段

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册