Вы не можете (не должны) конвертировать указатель в int
, что вы, скорее всего, захотите сделать, это преобразовать указанное значение в int
.
Так что просто разыменуйте указатель, чтобы получить uint64
и 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
) приводит к пани времени выполнения c.
Также обратите внимание, что размер (и, следовательно, действительный Диапазон) int
зависит от платформы, он может быть 64- и 32-битным. Таким образом, преобразование любого значения uint64
в int
может потерять старшие 32 бита, а некоторые положительные входные числа могут превратиться в отрицательные.