介面方法中的型別參數:Go 泛型困境
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中文網其他相關文章!