前提・実現したいこと
ifステートメントの勉強をしていたのですが、以下のコードがどういう順番で処理されているのかが分かりません。
まず引き数の-4を自前関数sqrtに与えます。
0より小さいので4となり、if文内で文字連結が行われます。
自前関数ではstringで返すと設定されているので、returnによって、4iが文字列として出てきます。
しかし、xはif文内でiと連結されて文字列になったはずなのに、math.Sqrtに引数として与えることができていました。
そして文字列になってif文から出てきたはずの4の平方根を計算して2にすることができています。
結果は2iが出てきました。
プログラミングコードは上から順に処理されるのではないのですか?
いつ文字列に変換され、どのタイミングで文字連結されているのですか?
該当のソースコード
package main
import (
"fmt"
"math"
)
func sqrt(x float64) string {
if x < 0 {
return sqrt(-x) + "i"
}
return fmt.Sprint(math.Sqrt(x))
}
func main() {
fmt.Println(sqrt(2), sqrt(-4))
}
試したこと
Qiita等数値と文字列を連結する方法が書かれたサイトを調べましたが、求める情報は出ませんでした。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/30 23:17
2020/08/30 23:18
2020/08/30 23:21 編集
2020/08/30 23:25
2020/08/30 23:47
2020/08/30 23:48
2020/08/31 00:00