首頁 > 後端開發 > Golang > 如何在成員相同但類型不同的 Go 結構體之間有效率地轉換?

如何在成員相同但類型不同的 Go 結構體之間有效率地轉換?

Patricia Arquette
發布: 2024-12-13 16:19:10
原創
122 人瀏覽過

How Can I Efficiently Convert 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 類型的變數foo 並且您想要將其值複製到類型為bar的變數Bar.

轉換方法

由於Foo 和Bar 的底層類型除了結構體標籤之外都是相同的,因此您可以使用類型轉換來複製值。具體方法如下:

foo := Foo{Id: "123", Name: "Joe"}
bar := Bar(foo)
登入後複製

在上面的程式碼中,轉換 Bar(foo) 明確地將 foo 的值從 Foo 型別轉換為 Bar。這是可能的,因為底層類型是相同的。

Playground 範例

<br>package main<p>import "fmt"</p><p>模式一般結構{</p><pre class="brush:php;toolbar:false">Gender int
From   string
To     string
登入後複製

}

型Foo 結構體{

Id    string
Name  string
Extra Common
登入後複製
登入後複製

}

Id    string
Name  string
Extra Common
登入後複製
登入後複製
}

Bar 結構體{

foo := Foo{Id: "123", Name: "Joe"}
bar := Bar(foo)

fmt.Println(bar)
登入後複製
}


func main() {

}

{123 Joe {0 "" ""}}
登入後複製

輸出

如您所見,來自foo的值已成功複製到bar.

注意:僅當結構體的基礎類型相同(結構體標籤除外)時,轉換方法才有效。如果基礎類型不同,您將需要手動逐個成員複製值。

以上是如何在成員相同但類型不同的 Go 結構體之間有效率地轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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