首頁  >  文章  >  後端開發  >  如何在具有不同欄位的 Go 結構之間進行轉換?

如何在具有不同欄位的 Go 結構之間進行轉換?

Linda Hamilton
Linda Hamilton原創
2024-10-28 04:14:02813瀏覽

 How to Convert Between Go Structs with Different Fields?

Go 中的結構體轉換

問:我有兩個不同欄位的結構體。如何將類型 A 的變數轉換為類型 B,其中 A 僅包含基本欄位而 B 包含附加欄位?是否可以直接執行此轉換,還是需要手動複製欄位?

A:在 Go 中,可以利用嵌入功能來執行結構體轉換。這允許您將一個結構的字段嵌套在另一個結構中。例如,在您的情況下,您有一個具有兩個欄位(a 和 b)的結構體 A,以及一個嵌入結構體 A 並添加其他欄位(c 和可能更多)的結構體 B。

從 A 轉換對於 B,您可以簡單地建立 B 結構體並在其中嵌入 A 的實例:

<code class="go">type A struct {
    a int
    b string
}

type B struct {
    A
    c string
}

func main() {
    // create structA of type A
    structA := A{a: 42, b: "foo"}

    // convert to type B
    structB := B{A: structA}

    // access the fields of structB
    fmt.Println(structB.a, structB.b, structB.c) // Output: 42 foo (additional value)
}</code>

以上是如何在具有不同欄位的 Go 結構之間進行轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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