首頁 >後端開發 >Golang >如何取得 Go 中任意資料結構的大小?

如何取得 Go 中任意資料結構的大小?

DDD
DDD原創
2024-11-27 03:07:09895瀏覽

How Can I Generically Get the Size of Any Data Structure in Go?

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

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