我有一個介面 X 和一個名為 Y 的 X 實作。
問題是我有一個接收 chan X 作為引數的方法,但是當我傳遞 Y 型別的變數 channel 時,我收到錯誤“不能使用 'channel' (type chan Y) as type chan X” .
我已經確保 Y 確實實作了 X 的所有方法,但是我不確定如何解決這個問題。任何有關為什么會發生這種情況的幫助將不勝感激!
謝謝
uj5u.com熱心網友回復:
你不能以那種方式“解決”這個問題,無論和之間的關系如何,chan Y都不能用 a 代替 a 。chan XXY
你需要重新撰寫你的代碼,這樣,如果一個函式需要你給它一個chan X,你給它一個chan X.
IfX是一個介面,并且Y滿足該介面,您可以發送指向Ya 的指標chan X,但這不會使 achan Y可用作 a chan X。這樣做會完全破壞 a 的合同func(chan X)。想象一下,如果接受 a 的函式chan X可以接收 a chan Y。現在,該函式在內部希望能夠通過同一個通道發送 a Z,它也實作了X介面,但不能,因為chan X您沒有保留它所需的,而是給了它錯誤的通道型別。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/444026.html
標籤:走
下一篇:在2個goroutine之間同步
