gofmt コマンドは、花括弧 ({}) をフォーマットしません。
コード:
package main
import "fmt"
func main()
{
fmt.Printf("Hello, world\n")
}
gofmt hello.go の出力
hello.go:6:1: 予期される宣言、見つかった '{' 終了ステータス 2
スペースをどこかに置くと、適切にフォーマットされます。gofmt はブレースをフォーマットしませんか?
関数宣言の同じ行に中括弧を配置する必要があります。そうしないと、この構文エラーのためにコードがコンパイルされません
中括弧はあるのにセミコロンがないのはなぜですか? そして、次の行に左中括弧を配置できないのはなぜですか?
Go では、ステートメントのグループ化に中かっこを使用します。これは、C ファミリーの任意の言語を使用したことのあるプログラマーになじみのある構文です。ただし、セミコロンはパーサー用であり、人用ではないため、可能な限り削除したいと考えていました。この目標を達成するために、Go は BCPL からトリックを借りています。ステートメントを区切るセミコロンは形式的な文法にありますが、ステートメントの終わりになる可能性のある行の最後に、レクサーによって先読みなしで自動的に挿入されます。これは実際には非常にうまく機能しますが、ブレース スタイルを強制する効果があります。たとえば、関数の左中かっこは、単独で行に表示することはできません。
あなたのコードには構文エラーがあります:関数宣言と同じ行に開き中括弧を入れてください。プログラムフラグメントは、gofmt を使用するために構文的に有効である必要があり
ます。
参照: https://golang.org/cmd/gofmt/ それは言う:
gofmt が標準入力から読み取る場合、完全な Go プログラムまたはプログラム フラグメントのいずれかを受け入れます。プログラム フラグメントは、構文的に有効な宣言リスト、ステートメント リスト、または式でなければなりません。このようなフラグメントをフォーマットする場合、gofmt は先頭のインデントと前後のスペースを保持するため、go プログラムの個々のセクションを gofmt を介してパイプすることでフォーマットできます。
関数宣言と同じ行に開き中かっこを入れてください おそらくエディターに gofmt を追加する必要があります。コード形式の問題を回避できます