理解 Go 中的介面方法型別參數
在 Go 泛型中,介面方法不允許有型別參數。此限制源自於類型參數提案中概述的基本設計考量。
為什麼介面中禁止型別參數?
實作通用抽象
儘管介面方法中不允許型別參數,但該語言提供了另一種方法。您可以將類型參數移至介面類型定義本身,如下所示:
type Reader[V Unmarshaler] interface { Read(bucket []byte, k ...[]byte) ([][]byte, error) ReadDoc(bucket []byte, factory func() (V, error), k ...[]byte) ([]V, error) } type Unmarshaler interface { UnmarshalKV(v []byte) error }
這種方法保留了所需的泛型抽象,而不違反介面方法類型參數限制。
以上是為什麼 Go 介面方法不能有型別參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!