首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能把左大括号放在下一行?

为什么我不能把左大括号放在下一行?
EN

Stack Overflow用户
提问于 2011-08-15 14:39:22
回答 5查看 1.1K关注 0票数 5

当我尝试编译以下代码时,遇到了一个奇怪的错误:

代码语言:javascript
复制
package main

    import fmt "fmt"

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

错误如下:

代码语言:js
复制
unexpected semicolon or newline before {

更正后,以下代码工作正常:

代码语言:javascript
复制
package main

    import fmt "fmt"

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

GO语言有这么严格的类型吗?而且这个也没有警告。这不应该是程序员选择如何格式化他的代码吗?Go语言警告和错误

EN

回答 5

Stack Overflow用户

发布于 2011-08-15 14:42:57

Go语言会自动插入分号,因此{位于前一行的末尾。始终使用相同的样式编写Go代码gofmt产生,您将不会有任何问题。

请参阅Go的常见问题解答:为什么有大括号而没有分号?为什么我不能把大括号放在下一个line?上呢?

票数 13
EN

Stack Overflow用户

发布于 2011-08-15 14:46:02

go语言包含具有特定规则的分号,在您的示例中,i++后面的换行符在'{‘之前引入分号。请参见http://golang.org/doc/go\_spec.html..。

格式化在某种程度上是语言的一部分,使用gofmt使代码看起来类似,但是,您可以用许多不同的方式格式化代码。

票数 7
EN

Stack Overflow用户

发布于 2011-08-15 14:52:40

Go代码具有必需的支撑样式。同样,程序员不能选择在python中使用大括号,而必须使用缩进。

所需的大括号样式允许分号插入工作,而不需要解析器提前查看下一行(如果您想要为GO代码实现REPL,这是很有用的)

代码语言:javascript
复制
package main

func main();

是有效的Go代码,不看下一行,解析器就会假设这就是你想要的,然后被没有连接到你放在它后面的任何东西的块搞糊涂了。

在所有Go代码中使用相同的大括号样式会让代码更容易阅读,同时也避免了关于大括号样式的讨论。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7062276

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档