Go 泛型:解鎖類型聯合中的共享方法
在Go 的新泛型功能中,類型聯合約束允許綁定多個類型單一泛型類型參數。然而,問題出現了:如何在這些類型之間使用共享方法?
初始嘗試與編譯器錯誤
<br>type AB interface { <pre class="brush:php;toolbar:false">*A | *B
}
return true
return false
return x.some() // undefined
使用介面的解決方法約束
要克服這個限制,可以直接在介面約束中加入共享方法:<p>type AB interface {<br></p> <pre class="brush:php;toolbar:false">*A | *B some() bool
return x.some() // works
Go 1.18 中的限制
需要注意的是由於 Go 1.18 中的限制,此解決方法是臨時措施。 Go 規格允許在類型聯合中使用共用方法,但目前編譯器實作將其限制為在約束介面中明確宣告的方法。Go 1.19 中的解決方案
Go 1.18 發行說明承認了這一限制,並明確計劃在Go 1.19 中刪除它,允許直接訪問類型聯合中的共享方法。這項改進將增強 Go 泛型的表現力和靈活性。以上是共享方法如何與 Go 泛型的類型聯合約束一起使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!