Вызов функции Golang без скобок - PullRequest
0 голосов
/ 15 ноября 2018

Я просматриваю учебные пособия по Голангу на их веб-сайте, и меня смущает код, похожий на этот, который я упростил и воспроизвел здесь:

package main

import (
    "fmt"
    "math"
)

func main() {
    a := math.Sqrt2
    fmt.Println(a)
}

Это печатает 1.4142135623730951 в песочнице. Замена a := math.Sqrt2 на a := math.Sqrt(2) делает то же самое, но я запутался, как функцию можно вызывать без скобок. math.Sqrt здесь не указатель на функцию (в любом случае функции math.Sqrt2 нет, она передается без скобок. Функция в документации Go здесь указана как: func Sqrt(x float64) float64, т. Е. С Параметр. Итак, как это работает? Это просто потому, что math.Sqrt() - это упрощенная функция, и Go может предположить, что это float64 без пропущенных скобок? Я что-то упустил?

Если это поможет, я нашел это явление здесь в учебниках по строке 14, изначально. Если бы кто-нибудь мог объяснить мне эту функцию, это было бы здорово. Я хотел бы узнать об этом.

1 Ответ

0 голосов
/ 15 ноября 2018

Здесь ничего особенного не происходит.math.Sqrt2 является константой.Вы можете найти другие константы в пакете math в документах .

В общем, в go нет "магии".Так что, если что-то кажется немного волшебным, скорее всего, это просто недоразумение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...