有沒有一種方法可以確保傳遞的值具有使用泛型的某些欄位?
有沒有一種方法可以確保傳遞的值具有使用泛型的某些欄位?這是許多開發者在使用泛型時常常遇到的問題。在PHP中,我們可以透過類型約束和介面實作來實現這項功能。首先,我們可以使用類型約束來確保傳遞的值是某個類別的實例。然後,我們可以使用介面來定義某些欄位的規範,確保傳遞的值具有這些欄位。這樣,我們就可以在程式碼中使用泛型,並確保傳遞的值符合特定的欄位要求。透過這種方式,我們可以更好地利用泛型的優勢,並確保程式碼的可靠性和安全性。
問題內容
我試圖在 go 中定義一個通用函數,它接受具有某些欄位的值,例如 id int
。我嘗試了幾種方法,但似乎都不起作用。這是我嘗試過的範例。
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 }
這是遊樂場連結:https://gotipplay.golang.org/p/2i4rsucwagf
在上面的範例中,我想保證傳遞給 print
函數的每個值都有一個屬性 id int
,該屬性也可以在函數中存取。有什麼方法可以在 go 中實現此目的,而無需在介面中定義方法(例如 getid() int
)?
解決方法
有什麼方法可以在 go 中實現此目的,而無需在介面中定義方法(例如 getid() int)?
不,您必須在介面中定義方法。
go 1.18 中的泛型實作不支援結構類型,儘管原始類型參數提案建議支援。要存取聯合中的公共字段,另請參閱 這個解釋。
儘管如此,我認為值得指出一個很容易從您的示例中產生的誤解:近似值~t
(波形符類型)的含義意味著「基礎類型為t 的類型集。 p>
現在,當你寫:
~struct{ id int }
這意味著其基礎型別完全為 struct{ id int }
。無論如何,這不包括具有字段 id int
和其他內容的結構。例如。 type foo struct { id int; 的底層型別;名稱字串}
是struct { id int;命名字串}
,而不是struct{ id int }
,這樣無論如何都無法滿足限制。
目前時間參數實作沒有指定部分結構類型的語法。我記得提案在介面限制中加入欄位術語(以及型別術語和方法) ),上線了:
type IDer interface { ID int }
這將在不破壞波形符號 ~
的含義的情況下實現您想要執行的操作。但這不會包含在 go 1.18 中。
以上是有沒有一種方法可以確保傳遞的值具有使用泛型的某些欄位?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

是的,H5頁面製作是前端開發的重要實現方式,涉及HTML、CSS和JavaScript等核心技術。開發者通過巧妙結合這些技術,例如使用<canvas>標籤繪製圖形或使用JavaScript控制交互行為,構建出動態且功能強大的H5頁面。

如何使用JavaScript或CSS控制瀏覽器打印設置中的頁首和頁尾在瀏覽器的打印設置中,有一個選項可以控制是否顯�...

關於inline-block元素錯位顯示的原因及解決方案在編寫網頁佈局時,我們常常會遇到一些看似奇怪的顯示問題。比...

如何實現分段器的45度曲線效果?在實現分段器的過程中,如何讓點擊左側按鈕時右側邊框變成45度曲線,而點�...

CSS自定義resize符號的方法與背景色統一在日常開發中,我們經常會遇到需要自定義用戶界面細節的情況,比如調...

實時比特幣美元價格 影響比特幣價格的因素 預測比特幣未來價格的指標 以下是 2018-2024 年比特幣價格的一些關鍵信息:
