fiber/internal/reflectunsafe/reflectunsafe.go
2022-08-31 21:49:43 +08:00

19 lines
287 B
Go

package reflectunsafe
import (
"reflect"
"unsafe"
)
func ValueAndTypeID(v any) (reflect.Value, uintptr) {
header := (*emptyInterface)(unsafe.Pointer(&v))
rv := reflect.ValueOf(v)
return rv, header.typeID
}
type emptyInterface struct {
typeID uintptr
dataPtr unsafe.Pointer
}