gpt4 book ai didi

gorm 不支持的目标,应该是 slice 或 struct

转载 作者:行者123 更新时间:2023-12-01 22:21:03 24 4
gpt4 key购买 nike

当我使用这种方式时,它没有错误

var result model.Captcha
fmt.Printf("Type: %T", result)
if err := DB.Model(&model.Captcha{}).Where("id = ?", randNum).Find(&result).Error; err != nil{
return nil, err
}
但是如果我使用以下方式,就会出现错误
var result *model.Captcha
fmt.Printf("Type: %T", result)
if err := DB.Model(&model.Captcha{}).Where("id = ?", randNum).Find(result).Error; err != nil{
return nil, err
}
result第一种方式是 model.Captcha ,然后 &result在 Find(&result) 中,类型为 *model.Captcha ,第二种方式 result类型是 *model.Captcha ,但第二种方式有错误?
谁能告诉我为什么,谢谢!

最佳答案

您应该将结果定义为 result := &models.Captcha{} , 这样就可以使用.Find(result)不使用 & .
请查看this go tour link为了更好地理解指针。
当您声明 var result *models.Captcha ,编译器会创建一个nil指针,但是用&可以生成一个指向底层models.Captcha的指针,那么gorm就可以使用这个句柄将SQL数据绑定(bind)到struct。

关于gorm 不支持的目标,应该是 slice 或 struct,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63542532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com