第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Golang 與 GORM。如何正確地將模型類型傳遞給方法?

Golang 與 GORM。如何正確地將模型類型傳遞給方法?

Go
偶然的你 2023-06-19 15:29:15
我有下一個(gè) GORM 模型package entityimport (    "github.com/jinzhu/gorm")type InterfaceEntity interface {}type User struct {    InterfaceEntity    gorm.Model    Name string}我嘗試將 GORM 實(shí)體類型傳遞到基礎(chǔ) crud 存儲(chǔ)庫(kù)中。我的基礎(chǔ) crud 存儲(chǔ)庫(kù):package repositoryimport (    "billingo/model/entity"    "fmt"    "github.com/jinzhu/gorm"    "reflect")type CrudRepository struct {    *BaseRepository}func NewCrudRepository(db *gorm.DB) CrudRepositoryInterface {    repo := NewBaseRepository(db).(*BaseRepository)    return &CrudRepository{repo}}func (c CrudRepository) Find(id uint, item entity.InterfaceEntity) entity.InterfaceEntity {    fmt.Println("--- Initial")    var local entity.User    fmt.Println("--- local: ", reflect.TypeOf(local), local)    fmt.Println("--- Item:  ", reflect.TypeOf(item), item)    fmt.Println("--- Values")    c.db.First(&local, id)    fmt.Println("--- local: ", reflect.TypeOf(local), local)    c.db.First(&item, id)    fmt.Println("--- Item: ", reflect.TypeOf(item), item)    return item}正如您在這里看到的,方法中有item和local變量Find()。我item通過(guò)服務(wù)的下一種方式傳遞:func (c CrudService) GetItem(id uint) entity.InterfaceEntity {    var item entity.User    return c.repository.Find(id, item)}看來(lái)whatlocal和item必須是equals和behavior必須是等價(jià)的。但是輸出是--- Initial--- local:  entity.User {<nil> {0 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC <nil>} }--- Item:   entity.User {<nil> {0 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC <nil>} }--- Values--- local:  entity.User {<nil> {1 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC <nil>} test 1}--- Item:  entity.User {<nil> {0 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC <nil>} }INFO[0000] User info                                     user="{<nil> {0 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC <nil>} }" user-id=1(/home/mnv/go/src/billingo/model/repository/CrudRepository.go:29) [2019-05-17 17:07:37]  unsupported destination, should be slice or struct item從服務(wù)傳遞到消息不支持的目標(biāo),應(yīng)該是 slice 或 struct如何item正確通過(guò),我需要像 with 這樣的行為local?
查看完整描述

2 回答

?
墨色風(fēng)雨

TA貢獻(xiàn)1853條經(jīng)驗(yàn) 獲得超6個(gè)贊

Gorm 不想將數(shù)據(jù)解組為您的空接口類型。

即使您傳遞的是實(shí)現(xiàn)該特定接口的結(jié)構(gòu),它在傳遞后仍保持類型化為接口。您需要將該item接口轉(zhuǎn)換回您的User結(jié)構(gòu)。

喜歡item.(entity.User)


查看完整回答
反對(duì) 回復(fù) 2023-06-19
?
素胚勾勒不出你

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超9個(gè)贊

哦,我已經(jīng)修好了。


現(xiàn)在Find從服務(wù)調(diào)用存儲(chǔ)庫(kù)方法&item:


func (c CrudService) GetItem(id uint) entity.InterfaceEntity {

    var item entity.User

    return c.repository.Find(id, &item)

}

存儲(chǔ)庫(kù)方法item不通過(guò)&:


func (c CrudRepository) Find(id uint, item entity.InterfaceEntity) entity.InterfaceEntity {

    c.db.First(item, id)

    return item

}


查看完整回答
反對(duì) 回復(fù) 2023-06-19
  • 2 回答
  • 0 關(guān)注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)