Question

I'm trying to assign the value found in a variable of type uintptr to a uint64 variable in Go. Using

myVar = valFromSystem

gives me

cannot use valFromSystem (type uintptr) as type uint64 in assignment

And trying

myVar = *valFromSystem

gives me

invalid indirect of valFromSystem (type uintptr)

Is there a way to pull the value pointed to by valFromSystem to assign to myVar?

Était-ce utile?

La solution

First, cast valFromSystem into an unsafe.Pointer. An unsafe.Pointer can be casted into any pointer type. Next, cast the unsafe.Pointer into a pointer to whatever type of data valFromSystem points to, e.g. an uint64.

ptrFromSystem = (*uint64)(unsafe.Pointer(valFromSystem))

If you just want to get the value of the pointer (without dereferencing it), you can use a direct cast:

uint64FromSystem = uint64(valFromSystem)

Though remember that you should use the type uintptr when using pointers as integers.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top