首頁  >  文章  >  後端開發  >  如何在 Go 中將匿名結構切片轉換為非匿名結構切片?

如何在 Go 中將匿名結構切片轉換為非匿名結構切片?

Patricia Arquette
Patricia Arquette原創
2024-10-27 11:40:01864瀏覽

How to Convert a Slice of Anonymous Structs to a Slice of Non-Anonymous Structs in Go?

Go 中結構體切片之間的類型轉換

問題:

問題:

試圖將🎜>試圖將🎜>試圖將🎜>試圖將🎜>試圖將🎜>試圖將🎜>試圖將🎜>試圖將🎜>試圖將🎜>試圖將🎜>試圖將🎜>試圖將🎜>試圖將🎜>試圖將匿名結構切片轉換為非匿名結構切片時,會發生錯誤。這引發了關於帶有和不帶有 JSON 標籤的結構的等效性以及不同切片的兼容性的問題。

答案:

結構類型之間的差異:

具有不同JSON 標籤的結構體被視為不同的類型,因為標籤會影響JSON 資料的編碼和解碼。

轉換選項:

1。透過迭代複製:
<code class="go">ls := make(ListSociete, len(res))
for i := 0; i < len(res); i++ {
    ls[i].Name = res[i].Name
}
return ls, nil</code>

這是建議的方法,但它更慢且更冗長。它涉及將匿名結構體切片的每個元素複製到非匿名結構體切片中。

2.不安全轉換:
<code class="go">return *(*ListSociete)(unsafe.Pointer(&res)), nil</code>

這是一種不安全的方法,假設兩種結構類型的底層資料結構相同。

警告: 不安全的轉換可能會導致不可預測的行為,不建議一般使用。使用它可能會導致記憶體損壞或其他意外錯誤。

以上是如何在 Go 中將匿名結構切片轉換為非匿名結構切片?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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