2014-04-21 11 views
10

Sto provando ad assegnare il valore trovato in una variabile di tipo uintptr a una variabile uint64 in Go. UtilizzandoAssegnazione di un tipo uintptr a uint64 in GoLang

myVar = valFromSystem 

mi dà

non può usare valFromSystem (tipo uintptr) come tipo uint64 in assegnazione

E cercando

myVar = *valFromSystem 

mi dà

valida indiretta di valFromSystem (tipo uintptr)

Esiste un modo per tirare il valore puntato da valFromSystem da assegnare a myvar?

risposta

16

In primo luogo, cast valFromSystem in un unsafe.Pointer. Un unsafe.Pointer può essere convertito in qualsiasi tipo di puntatore. Successivamente, inserisci unsafe.Pointer in un puntatore a qualunque tipo di dati, ad esempio valFromSystem, ad es. un uint64.

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

Se si desidera solo per ottenere il valore del puntatore (senza dereferenziazione esso), è possibile utilizzare un cast diretta:

uint64FromSystem = uint64(valFromSystem) 

Anche ricordare che si dovrebbe utilizzare il tipo di uintptr quando si utilizza puntatori come interi.

Problemi correlati