就我而言,我有2个变量,其数据类型为*uint64
和*uint32
。我需要将它们转换为int
数据类型。
当我尝试将它们转换为int()
函数时,会引发以下错误:
无法将* uint64类型的表达式转换为int类型。
我注意到,int()
如果数据类型没有* (asterisk)
字符,则相同的函数可以正常工作。
所以我的问题是如何正确地将数据类型*uint64
和*uint32
数据类型转换为int
数据类型?
您不能(不应)将指针转换为int
,最可能要做的就是将指向的值转换为int
。
因此,只需取消引用指针即可获得uint64
and uint32
值,您可以将其转换为:
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
)会导致运行时出现紧急情况。
另请注意,的大小(以及有效范围)int
取决于平台,可能是64位和32位。因此,将任何uint64
值转换为int
可能会丢失高32位,并且某些正输入数可能会变成负数。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句