首先,结构体里不要有指向上一层的指针,否则会循环读取直至崩溃,后面会把这个问题修掉。仅限测试使用
下面上源代码
package sizestruct
import (
"fmt"
"reflect"
"unsafe"
)
func SizeStruct(data interface{
}) int {
return sizeof(reflect.ValueOf(data))
}
func sizeof(v reflect.Value) int {
switch v.Kind() {
case reflect.Map:
sum := 0
keys := v.MapKeys()
for i := 0; i < len(keys); i++ {
m