Почему я не могу поставить открывающие скобки на следующей строке? - PullRequest
2 голосов
/ 15 августа 2011

При попытке скомпилировать следующий код возникла странная ошибка:


    package main

    import fmt "fmt"

    func main()
    {
       var arr [3]int
       for i:=0; i<3; i++
       {
         fmt.Printf("%d",arr[i])
       }
    }

Ошибка выглядит следующим образом:


    unexpected semicolon or newline before {

После исправления сработал следующий код:


    package main

    import fmt "fmt"

    func main(){
       var arr [3]int
       for i:=0; i<3; i++{
         fmt.Printf("%d",arr[i])
       }
    }

Является ли язык GO строго типизированным?И это также не имеет предупреждений.Разве это не выбор программистов, как он хочет отформатировать свой код? Предупреждения и ошибки языка Go

Ответы [ 5 ]

11 голосов
/ 15 августа 2011

Язык Go выполняет автоматическую вставку точек с запятой, поэтому единственное допустимое место для { находится в конце предыдущей строки. Всегда пишите код Go, используя тот же стиль, который создает gofmt, и у вас не возникнет проблем.

См. Часто задаваемые вопросы Go: Почему есть фигурные скобки, но нет точек с запятой? И почему я не могу поставить открывающую скобку на следующей строке?

7 голосов
/ 15 августа 2011

go язык включает точки с запятой с определенным правилом, в вашем случае, новая строка после i ++ вводит точку с запятой перед '{'.см. http://golang.org/doc/go_spec.html.

форматирование является частью языка, используйте gofmt, чтобы код выглядел одинаково, однако вы можете форматировать код разными способами.

2 голосов
/ 15 августа 2011

Если это не выбор программистов, как он хочет отформатировать его код

Может быть. Я думаю, что это хорошо, что Go делает шаг вперед, чтобы избежать какого-то велосипеда, как бесконечные дискуссии о стиле. Существует даже инструмент gofmt , который форматирует код в стандартном стиле, гарантируя, что большая часть кода Go будет следовать тем же рекомендациям. Как будто они говорили: «Постоянство везде> личные предпочтения. Привыкайте к этому, это хорошо (тм)».

2 голосов
/ 15 августа 2011

Код Go имеет обязательный стиль оформления. Точно так же, как программист не может использовать скобки в python, так и должен использовать отступ.

Требуемый стиль связывания позволяет вставлять точку с запятой, не требуя, чтобы анализатор смотрел вперед на следующую строку (что полезно, если вы хотите реализовать REPL для кода GO)

package main

func main();

является допустимым кодом Go, и, не глядя на следующую строку, парсер предполагает, что это именно то, что вы имели в виду, и затем сбивается с толку блоком, который не связан ни с чем, что вы добавили после него.

Наличие одного и того же стиля связывания во всем коде Go значительно облегчает чтение и позволяет избежать обсуждения стиля связывания.

0 голосов
/ 17 ноября 2018

Go lang придерживается строгих правил, чтобы поддерживать уникальную видимость для читателя, такого как Python, использовать визуальный код IDE, он будет выполнять автоматическое форматирование и обнаружение ошибок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...