2014-04-21 14 views
10

Tôi đang cố gán giá trị được tìm thấy trong một biến kiểu uintptr thành biến uint64 trong Go. Sử dụngGán một loại uintptr cho uint64 trong GoLang

myVar = valFromSystem 

mang lại cho tôi

không thể sử dụng valFromSystem (loại uintptr) as type uint64 trong phân

Và cố gắng

myVar = *valFromSystem 

mang lại cho tôi

không hợp lệ gián tiếp của valFromSystem (loại uintptr)

Có cách nào để kéo giá trị được trỏ đến bởi valFromSystem để gán cho myVar?

Trả lời

16

Trước tiên, hãy đúc valFromSystem vào unsafe.Pointer. An unsafe.Pointer có thể được đúc thành bất kỳ loại con trỏ nào. Tiếp theo, hãy đúc unsafe.Pointer vào con trỏ tới bất kỳ loại dữ liệu nào valFromSystem trỏ đến, ví dụ: an uint64.

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

Nếu bạn chỉ muốn nhận được giá trị của con trỏ (không dereferencing nó), bạn có thể sử dụng một dàn diễn viên trực tiếp:

uint64FromSystem = uint64(valFromSystem) 

Mặc dù nhớ rằng bạn nên sử dụng các loại uintptr khi sử dụng con trỏ dưới dạng số nguyên.

Các vấn đề liên quan