在 Go 中,泛型介面和實作不允許跨不同型別參數直接賦值。
讓我們想想一個簡化的範例:
此程式碼拋出一個編譯錯誤,指出Props[Example] 不能在 return 語句中指派給 Props[Generic]。這是因為當使用不同類型參數實例化泛型類型時,Go 會建立不同的命名類型。
考慮以下函數:
它使用 Generic 作為型別參數實例化 Props。因此,即使 Example 實作了 Generic,Props[Example] 和 Props[Generic] 也變成了兩種不同的類型。因此,將 Props[Example] 指派給 Props[Generic] 是無效的,無論其型別參數為何。
要解決此問題,一種選擇是使用滿足Generic 約束的類型參數來實例化Props:
在此範例中,Props 使用符合Generic 介面的類型參數T進行實例化。這允許將 Props[Example] 類型的值指派給 Props[Generic] 並確保類型安全。
以上是為什麼我不能為 Go 泛型類型指派不同的參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!