登录
首页 >  Golang >  Go问答

对一种类型进行转换到另一种类型

来源:stackoverflow

时间:2024-02-20 12:27:25 220浏览 收藏

小伙伴们有没有觉得学习Golang很有意思?有意思就对了!今天就给大家带来《对一种类型进行转换到另一种类型》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

问题内容

假设我有以下类型。

type contract struct {
    id              string  `json:"id" gorm:"column:uuid"`
    name            string  `json:"name" gorm:"column:name"`
    description     string  `json:"descr" gorm:"column:descr"`
    contracttypeid  int     `json:"contract_type_id" gorm:"column:contract_type_id"`
}

type contractmodel struct {
    id              string  `json:"id" gorm:"column:uuid"`
    name            string  `json:"name" gorm:"column:name"`
    description     string  `json:"descr" gorm:"column:descr"`
}

我有一个使用 gorm 的 sql 查询将结果扫描到合约对象中。

如何将合约对象中的值映射到contractmodel对象中?

我尝试使用 go-automapper 包:

automapper.map(contract, contractmodel{})

我想删除 contracttypeid

我可以对列表中的多种类型执行此操作吗?

var contractModels []ContractModel
automapper.Map(contracts, &contractModels)

解决方案


您可以执行以下任一操作:

models := []contractmodel{}
automapper.map(contracts, &models)

或者循环调用 automapper.map

models := make([]ContractModel, len(contracts))
for i := range contracts {
    automapper.Map(contracts[i], &models[i])
}

您应该知道,自动映射器在幕后使用反射,因此比 @thinkgoodly 建议的直接非多态复制要慢得多。如果性能不是最重要的,那么这是一个完全好的解决方案。

今天关于《对一种类型进行转换到另一种类型》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

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