在反射包中,我看到了类似
的代码 return float64(*(*float32)(v.ptr))
什么是*(* float32)(v.ptr)?我没有任何想法
答案 0 :(得分:2)
让我们解开表达式。我们将从最里面到最外面,因为这是它的评估顺序:
(*float32)(v.ptr)
将v.ptr
转换为指向*float32
的指针float32
。
*(*float32)(v.ptr)
取消引用该指针,为我们提供一个float32
值。
float64(*(*float32)(v.ptr))
将float32
值转换为float64
值。
因此,无论v.ptr
是什么,它都将转换为float32
指针,取消引用,然后转换为float64
,然后返回。