【发布时间】:2018-11-15 06:36:58
【问题描述】:
我正在浏览他们网站上的 Golang 教程,并且对类似于我在此处简化和复制的代码感到困惑:
package main
import (
"fmt"
"math"
)
func main() {
a := math.Sqrt2
fmt.Println(a)
}
这会在沙盒中打印1.4142135623730951。用a := math.Sqrt(2) 替换a := math.Sqrt2 做同样的事情,但我很困惑如何在没有括号的情况下调用该函数。 math.Sqrt 不是这里的函数指针(无论如何都没有 math.Sqrt2 函数,它是一个不带任何括号传递的函数。Go 文档中的函数 here 被列为:func Sqrt(x float64) float64 即带有参数。所以它是如何工作的?仅仅是因为math.Sqrt() 是一个简单的函数,Go 可以假设它是一个 float64 而不传递括号?我错过了什么吗?
如果有帮助,我最初在第 14 行的教程中发现了这种现象here。如果有人可以向我解释这个功能,那就太棒了。我很想了解它。
【问题讨论】:
-
math.Sqrt2是一个常数 golang.org/pkg/math/#pkg-constants golang.org/src/math/const.go -
啊,我明白了。谢谢!