將介面切片傳遞到不同的相容介面切片
在Go 中,當嘗試傳遞一個介面切片時,您可能會遇到挑戰一個函數的接口,該函數需要不同但相容的接口的一部分。雖然單一專案可以成功傳遞,但原始介面的切片可能會失敗。
例如,如果您有兩個介面 A 和 B,其中 A 包含 B,而 A 的具體實作也滿足 B ,您可能會遇到這個問題。將類型 A 的單一項目傳遞給需要 io.Reader 的函數是可行的,但是嘗試將 A 的切片傳遞給需要 []io.Reader 的函數將會失敗。
這是因為 Go 是靜態的類型化語言,不允許隱式型別轉換。要解決此問題,您必須建立預期類型的新切片並手動指派原始切片中的元素。在提供的範例中,錯誤訊息表明 []A 無法直接指派給 []io.Reader。
因此,建議的解決方案是建立一個新的 []io.Reader 切片並複製元素手動從 []A 切片中取得。這可確保函數能如預期接收正確類型的切片。
以上是如何將一個介面的切片傳遞給需要 Go 中相容但不同的介面切片的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!