轉換成員相同但類型不同的結構體
在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
foo := Foo{Id: "123", Name: "Joe"} bar := Bar(foo) fmt.Println(bar)
func main() {
}
{123 Joe {0 "" ""}}
輸出
如您所見,來自foo的值已成功複製到bar.
注意:僅當結構體的基礎類型相同(結構體標籤除外)時,轉換方法才有效。如果基礎類型不同,您將需要手動逐個成員複製值。以上是如何在成員相同但類型不同的 Go 結構體之間有效率地轉換?的詳細內容。更多資訊請關注PHP中文網其他相關文章!