2009-11-12 11 views
5

はここでテスト囲碁プログラムです:セミコロンでここにセミコロンが必要なのはなぜですか?

package main 
import fmt "fmt" 
func main() { 
    ex := "moo cow\n"; 
    fmt.Print (ex) 
} 

、それがコンパイルされます。ただし、セミコロンを削除すると、次のように表示されません。

 
string.go:5: syntax error near fmt 

どのようなアイデアですか?


アップデート(2012年3月):新しい行くのリリースでは(とやセミコロンなし)の両方のフォームをコンパイルすることができます。

答えて

10

The Go Programming Language Specificationから:(「=」または):私は(私はここかどうか分からない)式は「=」を使って何だと思う

文のリストの

要素が であってもよい、セミコロンで区切られ 省略だけ前 if文:

  • が宣言のリスト「)」閉じ括弧で終わります。または
  • は、式の一部ではない閉じ括弧 "}"で終わります。あなたは、ブロック単位であなたがPascalで行う方法をステートメントを分離するためにそれらを使用するよう
+7

...かなり醜い? – ZJR

+1

この「問題」はおそらく消えています。 http://golang.org/doc/play/ –

+0

で試してみてください。はい、テキストの解析方法の問題のようです。私はおそらくすべてのセミコロンを入れてしまうだろう。それが許されない限り。知っているほど十分に使用していない。 – steviesama

1

答えは技術的にはhttp://golang.org/doc/effective_go.html#semicolonsですが、あまり明確ではありません。あなたはステートメントの終わりにセミコロンを残すことができますが、式は残さないように見えます。 (+は=チュートリアルで罰金のようですが?)それに

+0

それを読んだ後、それが聞こえます。ブロックの外に、あなたはそれらを必要としません。 – Nosredna

関連する問題