在反射包中,我看到类似的代码

    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/

10-11 22:10