我有一個接口 X 和一個名為 Y 的 X 實現。問題是我有一個接收 chan X 作為參數的方法,但是當我傳遞類型為 Y 的變量通道時,我收到錯誤消息“無法使用‘通道’(類型為 chan Y)作為類型 chan X” .我已經確保 Y 確實實現了 X 的所有方法,但我不確定如何解決這個問題。任何關于為什么會發生這種情況的幫助將不勝感激!謝謝
1 回答

慕哥6287543
TA貢獻1831條經驗 獲得超10個贊
你不能用那種方式“解決”這個問題,無論和之間的關系如何,chan Y
都不能用 a 代替 a 。chan X
X
Y
您需要重新編寫代碼,這樣,如果一個函數需要您給它一個chan X
,那么您就是給它一個chan X
.
如果X
是一個接口,并且Y
實現了該接口,您可以將指針發送到Y
a 上chan X
,但這并不能使 achan Y
用作 a chan X
。這樣做會完全破壞 a 的合同func(chan X)
。想象一下,如果接受 a 的函數chan X
可以接收 a chan Y
?,F在在內部,該函數希望能夠通過同一通道發送一個Z
也實現X
接口的 ,但是不能,因為chan X
您沒有持有它需要的,而是給了它錯誤的通道類型。
- 1 回答
- 0 關注
- 117 瀏覽
添加回答
舉報
0/150
提交
取消