2 回答

TA貢獻1111條經驗 獲得超0個贊
您不能(不應該)將指針轉換為int,您最可能想要做的是將指向的值轉換為int。
因此,只需取消引用指針即可獲取uint64anduint32值,您可以將其轉換:
var i *uint64 = new(uint64)
var j *uint32 = new(uint32)
*i = 1
*j = 2
var k, l int
k = int(*i)
l = int(*j)
fmt.Println(k, l)
輸出(在Go Playground上嘗試):
1 2
請注意,當然,如果指針是nil
,嘗試取消引用它(如*i
)會導致運行時恐慌。
另請注意,大?。ㄒ约坝行Х秶?code>int取決于平臺,可能是 64 位和 32 位。因此,將任何uint64
值轉換為int
可能會丟失高 32 位,并且某些正輸入數可能會變成負數。

TA貢獻1943條經驗 獲得超7個贊
[H]ow 正確地將 *uint64 和 *uint32 數據類型轉換為 int 數據類型?!
像這樣
var a = int64(123)
var pa *uint64 = &a
var i = int(uintptr(unsafe.Pointer(&a)))
但請注意,雖然這是將 *uint64 轉換為 int 的“最正確的方法”,但這幾乎肯定不是您想要做的。你應該做什么:學習語言及其類型系統,并嘗試理解指針值是什么。
(請注意“最正確”,因為沒有正確的方法來執行您所要求的操作。)
- 2 回答
- 0 關注
- 284 瀏覽
添加回答
舉報