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

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

Patricia Arquette
發布: 2024-12-10 02:18:13
原創
469 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板