我正在学习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文档中的函数(链接)列出为:func Sqrt(x float64) float64
,即带有参数。那么这是如何工作的呢?只是因为math.Sqrt()
是一个简单的函数,Go可以假设它是一个float64
而不需要传递括号吗?我是否遗漏了什么?如果有帮助的话,我在教程中(链接)找到了这个现象,位于第14行。如果有人能向我解释这个特性,那就太棒了。我很想学习它。
math.Sqrt2
是一个常量,详情请参考 https://golang.org/pkg/math/#pkg-constants 和 https://golang.org/src/math/const.go。 - zerkms