首頁 >後端開發 >Golang >如何在成員相同但類型不同的 Go 結構體之間有效傳輸資料?

如何在成員相同但類型不同的 Go 結構體之間有效傳輸資料?

Patricia Arquette
Patricia Arquette原創
2024-12-10 02:18:13544瀏覽

How Can I Efficiently Transfer Data Between Go Structs with Identical Members but Different Types?

複製具有相同成員和變體類型的結構體

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn