Go 中取得結構大小的通用函數
這個問題解決如何建立一個通用函數來決定Go 中任何資料結構的大小Go,類似C的sizeof函數。開發人員嘗試使用介面和反射來完成此任務,但遇到了錯誤的結果。
理解問題
提供的程式碼計算的是reflect.Value結構的大小,而不是儲存在 T 介面中的物件。這是由於使用reflect.ValueOf(T)造成的。要解決此問題,需要使用 Reflect.TypeOf(T).Size() 來確定類型的大小,而不是值。
更正的代碼:
func getSize(T interface{}) { v := reflect.ValueOf(T) size := reflect.TypeOf(v).Size() fmt.Println(size) }
修訂後的輸出:
經過此更正,代碼返回考慮到填充,給定結構的預期大小為40。
以上是如何取得 Go 中任意資料結構的大小?的詳細內容。更多資訊請關注PHP中文網其他相關文章!