」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在 Go 中轉換結構:嵌入、手動複製或明確轉換?

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

發佈於2024-11-09
瀏覽:941

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 的明確轉換方法。如果您有複雜的轉換邏輯,這可能會很有用。但是,在這種情況下,這種方法並不是必需的,因為上述方法提供了實現所需轉換的直接方法。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3