4

シンプルな golang スクリプト T1.go を次に示します。

package main

import "fmt"

func main() {
    fmt.Println("Hello world")
}

で実行するとgo run T1.go、次のようになります。

T1.go:1:15: expected ';', found 'import'

;行末に追加した場合、プログラムは実行しても問題ありません。

package main;

import "fmt";

func main() {
    fmt.Println("Hello world")
}

しかし、golang で終わる行のセミコロンは冗長ではありませんか?

PS: 私は 64 ビット ウィンドウ 7 を使用しています。golang のバージョンはdevel +f4d1cb8d9a911.2rc1ですエラーコードは http://play.golang.org/ で完璧に動作します

dos2unixソース コードを UNIX の行末に変換するために使用した更新プログラムですが、何も変更されません

メモMy go はC:\goディレクトリにインストールされ、環境変数C:\go\binに追加されます。%PATH%ソース コードは、go のインストール ディレクトリとは異なるディレクトリT1.go内に配置されます。C:\t\goこの構成が問題に寄与しているかどうかは不明です。

4

2 に答える 2

8

Hex ダンプは、ファイル内で改行文字 (U+000A) の代わりにキャリッジ リターン文字 (U+000D) を使用していることを示していT1.goます。行末として CR のみを使用するのは、古い Mac の方法です。

仕様では、改行は 1 つの改行文字であると規定されています。これが見つからないため、パーサーはすべてが同じ行に書かれていると想定します。このような場合、コンパイラはセミコロンを実際に入力することを要求します。

解決

CR を LF に変更すると、動作するはずです。

Notepad++ を使用している場合、この変換はメニューの [編集] - [EOL 変換] - [Unix/OSX 形式] で行うことができます。

go fmtCR を LF に変換しませんが、CRLF を LF に変換します。
についても同様ですdos2unix。あなたの場合、それはで動作するはずmac2unixです。

于 2013-10-18T08:28:57.983 に答える
-2

1.2rc1バージョンのバグのように聞こえます。を試して1.2rc2、問題が解決しないかどうかを確認してください。

于 2013-10-18T06:16:11.137 に答える