var による宣言は実行前のコンパイルフェーズで行われます。 だだし、メモリ確保はされません。 シンボルテーブルに、変数であるとか配列であるとか登録されるだけ option 命令も同様で、実行されなくてもそこにあるだけで有効。 一方で var n = 10 と書くことは可能で、一見初期化に見えるけど、 これは var n ' 宣言(コンパイル時登録) n = 10 ' 代入(実行時処理) の二つの文をまとめたシンタクスシュガーです。 よって var n = 10 var x[n] は、一行目と二行目が「実行」されない限り、 len(x) == 10 とはならない。