2009-11-12 2 views
5

Вот тестовая программа Go:Зачем нужна точка с запятой?

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

С точкой с запятой, он компилирует. Однако, если точка с запятой удалена, ее нет:

 
string.go:5: syntax error near fmt 

Любые идеи?


Update (март 2012): Новые Go-релизы могут компилировать обе формы (с и без запятой).

ответ

10

От The Go Programming Language Specification:

Элементы списка заявлений разделенных точкой с запятой, которые могут быть опущены только если предыдущее заявление:

  • заканчивается закрывающей скобкой «)» из списка объявлений; или
  • заканчивается закрывающей скобкой "}", которая не является частью выражения.
+7

... довольно уродливый? – ZJR

+1

эта «проблема», вероятно, исчезла. Попробуйте на http://golang.org/doc/play/ –

+0

Да, похоже, проблема в том, как он анализирует текст. В любом случае, я бы все равно вложил все полуколоны. Если это не разрешено. Не использовали его достаточно, чтобы знать. – steviesama

1

Ну, ответ технически здесь: http://golang.org/doc/effective_go.html#semicolons, но это не очень понятно. Похоже, вы можете оставить точки с запятой с конца высказываний, но не выражения. Я думаю (я не уверен, здесь), что выражения ничего с «=» (или «: =») в них (хотя + =, кажется, хорошо в учебнике?)

+0

После прочтения это звучит так, будто вы используете их для разделения операторов в блоках, как вы это делаете в Паскале. Вне блоков вам они не нужны. – Nosredna

Смежные вопросы