main関数の中で無名関数fを定義し、繰り返し処理内で呼び出しています。
そこで s := "" という変数宣言があります。
これの正体はなんでしょうか?
あともう一つお聞きしたいのですが
関数呼び出し と 関数宣言 は これから頭で考えながらプログラムを書くうえでどちらから書くようにすればいいのでしょうか? たまにごっちゃになってしまいます。。
Go
1func main() { 2 3 // スライスを操作する無名関数を定義 戻り値で最初の要素を削ったスライスと取り出した値を返す 4 f := func(a []string)([]string, string) { 5 return a[1:], a[0] 6 } 7 8 // スライスを作成 9 m := []string{"one", "two", "three"} 10 11 // ☆これは何か☆ 12 s := "" 13 14 // スライスの長さが0よりも大きくなるまで繰り返す 15 for len(m) > 0 { 16 m, s = f(m) // 関数呼び出し 17 fmt.Println(s + "->", m) 18 } 19} 20 21// 実行結果 22one-> [two three] 23two-> [three] 24three-> [] 25
s := "" を削除して、m, s = f(m) を m, s := f(m) に変えればいいじゃんと思ったら、なんと無限ループしますね。
(s は一時的な変数なので、for の中で var s string する方が好みですが、もしかして効率良くないかも…。)