在 Go 中,將結構體數組直接分配給介面數組會引發編譯時錯誤。要了解原因,讓我們深入研究底層機制。
interface{} 表示可以儲存任何值的泛型類型。但是,它在內部表示為兩個單字對:
與介面相比,結構體將其欄位連續儲存在記憶體中,沒有單獨的型別字。
由於結構體和介面具有不同的記憶體表示形式,因此它們不能直接賦值。類型系統確保這一點以維護類型安全。
要實現所需的行為,請考慮以下選項:
使用介面切片
您可以建立介面切片並指派結構元素分別:
y := make([]interface{}, len(x)) for i, v := range x { y[i] = v }
將介面儲存到切片
或者,將介面儲存到結構切片:
var y interface{} y = x
以上是Go的`interface{}`陣列可以直接保存結構體陣列嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!