Я просматриваю учебные пособия по Голангу на их веб-сайте, и меня смущает код, похожий на этот, который я упростил и воспроизвел здесь:
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, изначально. Если бы кто-нибудь мог объяснить мне эту функцию, это было бы здорово. Я хотел бы узнать об этом.