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