在反射包中,我看到类似的代码
return float64(*(*float32)(v.ptr))
什么是*(* float32)(v.ptr)?我没什么主意
最佳答案
让我们解开表达式。我们将从最里面到最外面,因为这是它的评估顺序:
(*float32)(v.ptr)
将
v.ptr
转换为*float32
,它是float32
的指针。*(*float32)(v.ptr)
解引用那个指针,给我们一个
float32
值。float64(*(*float32)(v.ptr))
将
float32
值转换为float64
值。因此,无论
v.ptr
是什么,它都将转换为float32
指针,被取消引用,然后转换为float64
,然后返回。关于go - 来自go来源的代码是什么意思?像(*(* float32)(v.ptr)),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54658820/