5
我寫一個通用的函數得到任何類型的結構和返回結構的大小,類似於C語言的sizeof功能。泛型函數來得到任何結構的尺寸在golang
我想使用接口和反射來做到這一點,但我無法得到正確的結果。代碼如下
package main
import (
"fmt"
"reflect"
"unsafe"
)
func main() {
type myType struct {
a int
b int64
c float32
d float64
e float64
}
info := myType{1, 2, 3.0, 4.0, 5.0}
getSize(info)
}
func getSize(T interface{}) {
v := reflect.ValueOf(T)
const size = unsafe.Sizeof(v)
fmt.Println(size)
}
此代碼返回錯誤的結果爲12.我對golang很新,請在此幫助我。
謝謝。它運行良好 – sujin
或者,您可以使用'unsafe.Sizeof(myType {})'。 – thwd
@thwd你是對的,但我的getSize函數必須找到任何結構的大小,它必須在運行時找到結構的類型。正因爲如此,我選擇了反映包裝 – sujin