首頁 >後端開發 >Golang >Go 的類型轉換可以在具有相同成員但不同類型的結構之間複製值嗎?

Go 的類型轉換可以在具有相同成員但不同類型的結構之間複製值嗎?

Patricia Arquette
Patricia Arquette原創
2024-12-13 03:39:09539瀏覽

Can Go's type conversion copy values between 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 的實例(名為 foo)和 Bar 的實例(名為 bar),我們可以將值從 foo 複製到 bar 嗎?

使用類型轉換的解決方案

因為 Foo 和 Bar 的底層類型是相同的除了結構標籤之外,我們可以利用類型轉換來更改類型。這涉及到以下步驟:

  1. 聲明一個名為 foo 的 Foo 類型變數。
  2. 宣告一個名為 bar 的 Bar 類型變數。
  3. 為foo 賦值使用類型來禁止
foo := Foo{Id: "123", Name: "Joe"}
bar := Bar(foo)

Playground 範例

您可以在Go Playground 範例

您可以在此解決方案:此解決方案https://go.dev/play /p/j5jL1XFs-zG

注意:僅當基礎類型相同(結構標記除外)時,轉換才有效。結構中的複雜類型(例如映射、切片或陣列)需要更詳細的方法來複製值。

以上是Go 的類型轉換可以在具有相同成員但不同類型的結構之間複製值嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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