首頁 > 後端開發 > Golang > 如何在 Go 中轉換結構:嵌入、手動複製或明確轉換?

如何在 Go 中轉換結構:嵌入、手動複製或明確轉換?

Susan Sarandon
發布: 2024-10-29 01:40:02
原創
763 人瀏覽過

How to Convert a Struct in Go: Embedding, Manual Copying, or Explicit Conversion?

Go 中的結構體轉換

考慮以下兩個結構體:

type A struct {
    a int
    b string
}

type B struct {
    A
    c string
}
登入後複製

假設你有一個有一個類型的變數A 並想將其轉換為B 類型。在 Go 中可以嗎,還是需要手動複製欄位或建立明確轉換方法?

方法 1:嵌入結構體賦值

正如您在問題中提到的,嵌入可以用於此目的。透過將 A 嵌入到 B 中,只需將 A 類型的變數指派給嵌入欄位即可轉換為 B 類型。例如:

func main() {
    structA := A{a: 42, b: "foo"}
    structB := B{A: structA} // Embed structA into structB
}
登入後複製

此方法建立 B 的新實例,其中嵌入欄位中包含 A 的資料。

方法2:手動欄位複製

或者,您可以手動將欄位從A 複製到B,如下所示:

func main() {
    structA := A{a: 42, b: "foo"}
    structB := B{
        A: structA, // Copy fields from structA
        c: "bar",
    }
}
登入後複製

此方法涉及建立B 的新實例並手動指派A 中的欄位。

方法 3:明確轉換方法

另一個選擇是建立將 A 轉換為 B 的明確轉換方法。如果您有複雜的轉換邏輯,這可能很有用。但是,在這種情況下,這種方法並不是必需的,因為上述方法提供了實現所需轉換的簡單方法。

以上是如何在 Go 中轉換結構:嵌入、手動複製或明確轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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