在反射包中,我看到这样的代码
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
并返回。