Reputation: 79
I am going through the Golang tutorials on their website and am confused by code similar to this that I've simplified and reproduced here:
package main
import (
"fmt"
"math"
)
func main() {
a := math.Sqrt2
fmt.Println(a)
}
This prints 1.4142135623730951
in the sandbox. Replacing a := math.Sqrt2
with a := math.Sqrt(2)
does the same thing but I'm confused how the function can be called without parentheses. math.Sqrt
is not a function pointer here (there is no math.Sqrt2
function anyway, it's a function being passed without any parentheses. The function in the Go documentation here is listed as: func Sqrt(x float64) float64
i.e. with the parameter. So how does that work? Is it just because math.Sqrt()
is a simplistic function that Go can assume it's a float64
without the parentheses passed? Am I missing something?
If it helps, I found this phenomenon here in the tutorials on line 14, originally. If anyone could explain this feature to me, that would be awesome. I'd love to learn about it.
Upvotes: 3
Views: 1625