来自 go 源代码的代码是什么意思?喜欢 (*(*float32)(v.ptr))



在反射包中,我看到这样的代码

    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 并返回。

最新更新