「Go/関数」の版間の差分

削除された内容 追加された内容
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
Ef3 (トーク | 投稿記録)
タグ: 2017年版ソースエディター
8 行
}
</syntaxhighlight>
のような構文です。
 
;[https://paizaplay.iogolang.org/projectsp/55F0TajRrjOx7rEwOQ3W1g?language=goWIHQ7Vdnj9K コード関数の例]:<syntaxhighlight lang="go" highlight="5,7,10" line>
package main
 
import "fmt"
 
func schmain() {
fmt.Println("いまschにいるin main")
schsubr()
}
 
func mainsubr() {
fmt.Println("いまmainにいるin subr")
sch()
}
</syntaxhighlight>
;実行結果:<syntaxhighlight lang=text>
いまin mainにいる
in subr
いまschにいる
</syntaxhighlight>
; 解説
: 5行目が main 関数の定義でプログラムのエントリーポイントになります。
: 7行目で subr 関数を呼び出しています。
: 10行目で subr 関数を定義しています。
引数も返数もない関数呼び出しですが、注目してもらいたいのは subr の呼び出しが subr の定義に先行していて前方参照になっているにも関わらず、問題なくコンパイル・実行できる点です。
Goでは、関数だけでなく変数や型もパッケージスコープの場合は前方参照は処理系により解決され、循環参照は診断されます。
 
== ローカル変数 ==