Что означает этот код из исходников go?Like (* (* float32) (v.ptr)) - PullRequest
0 голосов
/ 13 февраля 2019

В пакете отражения я вижу код типа

    return float64(*(*float32)(v.ptr))

Что такое * (* float32) (v.ptr)?У меня нет идей

1 Ответ

0 голосов
/ 13 февраля 2019

Давайте развернем выражение.Мы возьмем его из глубины в глубину, так как это порядок оценки:

(*float32)(v.ptr)

Преобразование v.ptr в *float32, указатель на float32.

*(*float32)(v.ptr)

Разыменяем этот указатель, давая нам значение float32.

float64(*(*float32)(v.ptr))

Преобразование значения float32 в значение float64.

Итак, каким бы ни было v.ptr,он преобразуется в указатель float32, разыменовывается, затем преобразуется в float64 и возвращается.

...