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

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

Patricia Arquette
Patricia Arquette原創
2024-12-13 16:19:10121瀏覽

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中文網其他相關文章!

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