登录
首页 >  Golang >  Go问答

gorm 不支持的数据类型接口

来源:stackoverflow

时间:2024-04-29 10:54:31 365浏览 收藏

对于一个Golang开发者来说,牢固扎实的基础是十分重要的,golang学习网就来带大家一点点的掌握基础知识点。今天本篇文章带大家了解《gorm 不支持的数据类型接口》,主要介绍了,希望对大家的知识积累有所帮助,快点收藏起来吧,否则需要时就找不到了!

问题内容

gorm 不支持的数据类型接口。

如何将不同的结构保存到 json (gorm) 中的一个字段?需要类型检查,而不仅仅是 json 中的序列化。

有错误的示例代码:不支持的数据类型:models.fields

// table questions (GORM)
type Questions struct {
    ID
    Fields  `json:"fields"`
//  .....
}

type Fields interface{
//  ...
}

// radio ----------
type Radio struct {
    Text string
    Img string
    //  ...
}

func (d Radio) Value() (driver.Value, error) {
    return json.Marshal(d)
}

func (d *Radio) Scan(value interface{}) error {
    b, ok := value.([]byte)
    if !ok {
        return errors.New("type assertion to []byte failed")
    }
    return json.Unmarshal(b, &d)
}

// Checkbox ----------
type Checkbox struct {
    Text string
    MaxCheckbox   uint16
    //  ...
}

func (d Checkbox) Value() (driver.Value, error) {
    return json.Marshal(d)
}

func (d *Checkbox) Scan(value interface{}) error {
    b, ok := value.([]byte)
    if !ok {
        return errors.New("type assertion to []byte failed")
    }
    return json.Unmarshal(b, &d)
}

解决方案


您可能已经解决了这个问题,但您需要使用 polymorphism

终于介绍完啦!小伙伴们,这篇关于《gorm 不支持的数据类型接口》的介绍应该让你收获多多了吧!欢迎大家收藏或分享给更多需要学习的朋友吧~golang学习网公众号也会发布Golang相关知识,快来关注吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>