首頁  >  文章  >  後端開發  >  如何將一個介面的切片傳遞給需要 Go 中相容但不同的介面切片的函數?

如何將一個介面的切片傳遞給需要 Go 中相容但不同的介面切片的函數?

Patricia Arquette
Patricia Arquette原創
2024-10-25 10:22:02220瀏覽

How to Pass a Slice of One Interface to a Function Expecting a Slice of a Compatible but Different Interface in Go?

將介面切片傳遞到不同的相容介面切片

在Go 中,當嘗試傳遞一個介面切片時,您可能會遇到挑戰一個函數的接口,該函數需要不同但相容的接口的一部分。雖然單一專案可以成功傳遞,但原始介面的切片可能會失敗。

例如,如果您有兩個介面 A 和 B,其中 A 包含 B,而 A 的具體實作也滿足 B ,您可能會遇到這個問題。將類型 A 的單一項目傳遞給需要 io.Reader 的函數是可行的,但是嘗試將 A 的切片傳遞給需要 []io.Reader 的函數將會失敗。

這是因為 Go 是靜態的類型化語言,不允許隱式型別轉換。要解決此問題,您必須建立預期類型的新切片並手動指派原始切片中的元素。在提供的範例中,錯誤訊息表明 []A 無法直接指派給 []io.Reader。

因此,建議的解決方案是建立一個新的 []io.Reader 切片並複製元素手動從 []A 切片中取得。這可確保函數能如預期接收正確類型的切片。

以上是如何將一個介面的切片傳遞給需要 Go 中相容但不同的介面切片的函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn