如何解决将一种类型映射到另一种类型
假设我有以下类型。
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 建议的直接非多态复制要慢得多。如果性能不是重中之重,这是一个完全不错的解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。