前提・実現したいこと
goの勉強をしているのですが、何故この出力(
fmt.Println(compute(hypot)) fmt.Println(compute(math.Pow))
が、
5 81
)になるのかわかりません。
勉強サイト
fn func(float64, float64) float64
の意味は、fnはfloat64を二つ引数にし、float64の値を返す関数を定義し、computeは、関数(引数はfloat64を2つ、返り値はfloat64を1つ)を引数に、float64の値を返す関数であっていますか?
fmt.Println(compute(hypot))
はcompute(hypot(1,3))
とかなら分かるのですが、引数なしなのでエラーにならないのですか?
ソースコード
go
1package main 2 3import ( 4 "fmt" 5 "math" 6) 7 8func compute(fn func(float64, float64) float64) float64 { 9 return fn(3, 4) 10} 11 12func main() { 13 hypot := func(x, y float64) float64 { 14 return math.Sqrt(x*x + y*y) 15 } 16 fmt.Println(hypot(5, 12)) 17 18 fmt.Println(compute(hypot)) 19 fmt.Println(compute(math.Pow)) 20} 21
出力
13 5 81
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。