質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Q&A

解決済

1回答

868閲覧

goの勉強サイトのソースがわからない

nagi166

総合スコア23

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

0グッド

0クリップ

投稿2020/10/13 05:27

前提・実現したいこと

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

fmt.Println(compute(hypot))はcompute(hypot(1,3))とかなら分かるのですが、引数なしなのでエラーにならないのですか?

computeの中で引数が定義されています。

return fn(3, 4)

なので

fmt.Println(compute(hypot))は、

fmt.Println(hypot(3, 4))

です。

どうように、

fmt.Println(compute(math.Pow))は、

fmt.Println(math.Pow(3, 4))

になります。

投稿2020/10/13 06:03

momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問