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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 interface{} 的位置傳遞結(jié)構(gòu)時出錯

在 interface{} 的位置傳遞結(jié)構(gòu)時出錯

Go
開心每一天1111 2022-11-08 15:49:53
所以,我有這樣的功能func ProcessRequest(requestBody *SignInRequest, response func(SignInResponse) *src.Response, error func(ControllerError) *src.Response) *src.Response {    return error(ControllerError{Code: http.StatusNotImplemented})}而我試圖稱之為ProcessRequest(payload, myFunction, handler.OnControllerError)func myFunction(i interface{}) *src.Response {}這向我顯示了一個錯誤不能使用 'myFunction' (type func(i interface{}) *src.Response) 作為類型 func(SignInResponse) *src.Response但是如果我嘗試同樣的事情type TestStruct struct {    }func myFunction2(i interface{}) *src.Response {}myFunction2(TestStruct{})然后它沒有顯示任何錯誤。我希望它interface{}作為一個論點(diǎn),因為我想myFucntion成為可以接受任何struct.
查看完整描述

1 回答

?
飲歌長嘯

TA貢獻(xiàn)1951條經(jīng)驗 獲得超3個贊

你混淆了兩件事。


當(dāng)你有一個帶有 signaure 的函數(shù)時func (interface{}) *src.Response,你確實可以在傳遞任何類型的值的同時調(diào)用它,但事實并非如此。


發(fā)生的情況是您有另一個函數(shù) ,ProcessRequest并且其參數(shù)的類型之一是類型為 的函數(shù)func (SignInResponse) *src.Response。

當(dāng)您嘗試將類型值傳遞給func (interface{}) *src.Response接受類型參數(shù)的函數(shù)時會發(fā)生錯誤,func (SignInResponse) *src.Response因為這些參數(shù)的類型顯然不兼容。


更新。

要了解為什么參數(shù)的類型不兼容,請考慮SignInResponse并interface{}在內(nèi)存中具有不同的存儲表示;基本上這就是為什么[]T和[]interface{}不兼容的原因,即使你可以做到t := T{}; var i interface{} = t。常見問題解答中對此進(jìn)行了解釋。


至于手頭的問題,據(jù)說最簡單的方法是使用匿名函數(shù)將值“調(diào)整”SignInResponse為interface{}:傳遞給類似的ProcessResponse東西


func (r SignInResponse) *src.Response {

    return myFunction2(r)

}


查看完整回答
反對 回復(fù) 2022-11-08
  • 1 回答
  • 0 關(guān)注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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