2014-04-21 17 views
10

Próbuję przypisać wartość znalezioną w zmiennej typu uintptr do zmiennej uint64 w Go. KorzystaniePrzypisywanie typu uintptr do uint64 w GoLang

myVar = valFromSystem 

daje mi

nie można używać valFromSystem (typ uintptr) jako typ uint64 w przypisania

i próbuje

myVar = *valFromSystem 

daje mi

nieważny pośredni valFromSystem (typ uintptr)

Czy istnieje sposób, aby wyciągnąć wartość wskazywanego przez valFromSystem przypisać MyVar?

Odpowiedz

16

Najpierw odrzuć valFromSystem w unsafe.Pointer. An unsafe.Pointer można odlać na dowolny typ wskaźnika. Następnie prześlij wskaźnik unsafe.Pointer w wskaźnik do dowolnego rodzaju danych, na które wskazuje dany typ danych, np. uint64.

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

Jeśli chcesz po prostu uzyskać wartość wskaźnika (bez dereferencji go), można użyć bezpośredniego Obsada:

uint64FromSystem = uint64(valFromSystem) 

Choć pamiętać, że przy stosowaniu wskaźników należy użyć typu uintptr jako liczby całkowite.

Powiązane problemy