複製具有相同成員和變體類型的結構體
在Go 中,具有相同成員但不同類型的結構體並不罕見。考慮以下範例:
type Common struct { Gender int From string To string } type Foo struct { Id string Name string Extra Common } type Bar struct { Id string Name string Extra Common }
給定 Foo 和 Bar 的實例,我們如何將資料從一個實例傳送到另一個實例?
解:轉換
由於Foo 和Bar 的底層類型除了結構標籤之外都是相同的,因此Go 提供了一個簡單的解決方案:轉換。透過將 Foo 值轉換為 Bar 類型,我們有效地覆蓋了 Bar 中的現有資料。程式碼如下:
foo := Foo{Id: "123", Name: "Joe"} bar := Bar(foo)
範例
讓我們在遊樂場範例中測試轉換: https://go.dev/play/p/1W3EXQVXVhS.
限制
值得注意的是,只有當基礎類型相同(結構體除外)時,轉換才有效標示。如果底層類型差異很大,則需要建立專用的複製函數。
以上是如何在成員相同但類型不同的 Go 結構體之間有效傳輸資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!