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

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

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

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

Q&A

解決済

1回答

1363閲覧

A Tour of Goでの挙動について

Maar

総合スコア48

Go

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

0グッド

0クリップ

投稿2016/12/16 09:22

編集2016/12/16 09:23

A Tour of Goのコードにfmt.Printlnを追加したものなのですが、思っていた結果と違う結果になりました。なぜこのような結果になるのでしょうか?

go

1package main 2 3import ( 4 "fmt" 5 "math" 6) 7 8func pow(x, n, lim float64) float64 { 9 fmt.Printf("start\n") 10 if v := math.Pow(x, n); v < lim { 11 return v 12 } else { 13 fmt.Printf("%g >= %g\n", v, lim) 14 } 15 // can't use v here, though 16 return lim 17} 18 19func main() { 20 fmt.Println( 21 pow(3, 2, 10), 22 pow(3, 3, 20), 23 ) 24}

期待

shell

1start 29 3start 427 >= 20 520

結果

shell

1start 2start 327 >= 20 49 20

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

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

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

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

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

guest

回答1

0

ベストアンサー

fmt.Println は関数です。引数の値が全てが評価できてから関数は呼び出されます。つまり呼び出される順番は

  1. pow
  2. pow
  3. fmt.Println

となります。

投稿2016/12/16 09:24

mattn

総合スコア5030

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

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

mattn

2016/12/16 09:27

2重投稿してしまいました。この回答は削除リクエストしました。
Maar

2016/12/16 09:29

ご回答ありがとうございます returnのところが後回しにされてるってことですね! すっきりしました、またよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問