確保泛型函數中存在欄位
在Go 中,建立接受特定欄位的值的泛型函數可能具有挑戰性。使用泛型,我們可以嘗試強制執行此類約束,如下例所示:
package main import ( "fmt" ) func Print[T IDer](s T) { fmt.Print(s.ID) } func main() { Print(Person{3, "Test"}) } type IDer interface { ~struct{ ID int } } type Person struct { ID int Name string } type Store struct { ID int Domain string }
但是,這種方法會失敗,因為 Go 1.18 的泛型實作缺乏結構類型支援。因此,我們無法利用這種機制來保證傳遞值中存在特定欄位。
因此,在 Go 中,在處理聯合或確保欄位時,有必要在介面中定義方法來存取公用欄位存在於泛型函數中。
以上是如何保證 Go 泛型中的現場存在?的詳細內容。更多資訊請關注PHP中文網其他相關文章!