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)
}
- 1 回答
- 0 關(guān)注
- 103 瀏覽
添加回答
舉報