Go言語における"syntax error: unexpected [トークン], expecting [トークン]"エラーについて
Go言語では、構文エラーが発生した場合、エラーメッセージとして"syntax error: unexpected [トークン], expecting [トークン]"が出力されます。
ここでの[トークン]は、コード内の要素(キーワード、変数名、オペレータなど)を指します。
このエラーメッセージは、コンパイラが予期しないトークンを見つけたとき、または特定のトークンを期待していたが見つからなかったときに表示されます。
このエラーが発生する主な理由とその対処法を5つ紹介します。
他のエラーはコチラ
-
【Golang】Go言語でよく発生するエラー一覧8選
Go言語の一般的なエラーとその対処法 これから解説するエラー undefined: [変数名] syntax error: unexpected [トークン], expecting [トークン] re ...
続きを見る
1. セミコロンが不足している場合
プログラミング言語によっては、命令文の最後にセミコロン(;)をつけることが必須であり、忘れると "syntax error: unexpected [トークン], expecting ';' "というエラーが発生します。
Go言語でもこのルールは同じで、セミコロンの不足はよくあるエラーの一つです。
では、具体的なソースコードを見てみましょう。
1 2 3 4 5 6 7 |
package main import "fmt" func main() { fmt.Println("Hello, World!") } |
出力結果
syntax error: unexpected newline, expecting semicolon or newline
上記のコードでは、fmt.Println("Hello, World!")の行の末尾にセミコロンがありません。
そのため、コンパイラは次の行を読み込む時に予期しない改行を見つけ、エラーが発生します。
エラーを修正するには、単に命令文の最後にセミコロンを追加すればよいです。
修正後のコードは以下の通りです。
1 2 3 4 5 6 7 |
package main import "fmt" func main() { fmt.Println("Hello, World!"); } |
出力結果
Hello, World!
ポイント
2. 変数の宣言が不適切な場合
変数を宣言する時、適切な形式に従わなければ "syntax error: unexpected [トークン], expecting [トークン]" というエラーが発生します。
Go言語では、変数の宣言には "var" キーワードを使用しますが、これを忘れてしまうとエラーが発生します。
では、具体的なソースコードを見てみましょう。
1 2 3 4 5 6 7 8 |
package main import "fmt" func main() { message "Hello, World!" fmt.Println(message) } |
出力結果
syntax error: unexpected string literal, expecting semicolon or newline or }
上記のコードでは、変数messageの宣言に "var" キーワードが不足しています。
そのため、コンパイラは予期しない文字列リテラルを見つけ、エラーが発生します。
エラーを修正するには、変数宣言に "var" キーワードを追加すればよいです。
修正後のコードは以下の通りです。
1 2 3 4 5 6 7 8 |
package main import "fmt" func main() { var message = "Hello, World!" fmt.Println(message) } |
出力結果
Hello, World!
ポイント
3. 関数定義が不適切な場合
関数を定義する時も、適切な形式に従わなければ "syntax error: unexpected [トークン], expecting [トークン]" というエラーが発生します。
Go言語では、関数の定義には "func" キーワードを使用しますが、これを忘れてしまうとエラーが発生します。
では、具体的なソースコードを見てみましょう。
1 2 3 4 5 6 7 |
package main import "fmt" main() { fmt.Println("Hello, World!") } |
出力結果
syntax error: unexpected (, expecting func name or (
上記のコードでは、関数mainの定義に "func" キーワードが不足しています。
そのため、コンパイラは予期しないトークン '(' を見つけ、エラーが発生します。
エラーを修正するには、関数定義に "func" キーワードを追加すればよいです。
修正後のコードは以下の通りです。
1 2 3 4 5 6 7 |
package main import "fmt" func main() { fmt.Println("Hello, World!") } |
出力結果
Hello, World!
ポイント
4. 括弧の閉じ忘れ
Go言語では、括弧 "(" と ")" を使って関数呼び出しや条件式などを囲むことがあります。
しかし、これらの括弧を閉じ忘れると "syntax error: unexpected [トークン], expecting [トークン]" というエラーが発生します。
では、具体的なソースコードを見てみましょう。
1 2 3 4 5 6 7 8 9 |
package main import "fmt" func main() { if true { fmt.Println("Hello, World!" } } |
出力結果
syntax error: unexpected newline, expecting ) or }
上記のコードでは、Println関数の閉じ括弧 ")" が不足しています。
そのため、コンパイラは予期しない改行を見つけ、エラーが発生します。
エラーを修正するには、Println関数の閉弧 ")" を追加すればよいです。
修正後のコードは以下の通りです。
1 2 3 4 5 6 7 8 9 |
package main import "fmt" func main() { if true { fmt.Println("Hello, World!") } } |
出力結果
Hello, World!
ポイント
5. 不完全な演算子
Go言語では、2つの値を比較したり計算したりするための演算子があります。
しかし、これらの演算子を正しく記述しないと "syntax error: unexpected [トークン], expecting [トークン]" というエラーが発生します。
では、具体的なソースコードを見てみましょう。
1 2 3 4 5 6 7 |
package main import "fmt" func main() { fmt.Println(10 =) } |
出力結果
syntax error: unexpected =, expecting expression
上記のコードでは、"=" 演算子の後に何も書かれていないため、エラーが発生します。
このエラーは、演算子が不完全であることを示しています。
エラーを修正するには、"=" 演算子の後に比較する値を追加すればよいです。
修正後のコードは以下の通りです。
1 2 3 4 5 6 7 |
package main import "fmt" func main() { fmt.Println(10 == 10) } |
出力結果
true
ポイント
まとめ
以上、Go言語でよく遭遇する "syntax error: unexpected [トークン], expecting [トークン]" エラーの例をいくつか紹介しました。
ソースコードを書く上で、このようなエラーに遭遇することはよくあります。
しかし、エラーメッセージをしっかりと読み解き、問題が何であるかを理解することで、問題を解決することができます。
また、これらのエラーは基本的なプログラミングのルールを守ることで避けることができます。
ルールを理解し、正しくコードを書くことが重要です。
最後まで読んで頂き、ありがとうございました。少しでもお役にたてたなら幸いです!
他のエラーはコチラ
-
【Golang】Go言語でよく発生するエラー一覧8選
Go言語の一般的なエラーとその対処法 これから解説するエラー undefined: [変数名] syntax error: unexpected [トークン], expecting [トークン] re ...
続きを見る