当我尝试编译以下代码时,遇到了一个奇怪的错误:
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语言警告和错误
发布于 2011-08-15 14:42:57
Go语言会自动插入分号,因此{位于前一行的末尾。始终使用相同的样式编写Go代码gofmt产生,您将不会有任何问题。
请参阅Go的常见问题解答:为什么有大括号而没有分号?为什么我不能把大括号放在下一个line?上呢?
发布于 2011-08-15 14:46:02
go语言包含具有特定规则的分号,在您的示例中,i++后面的换行符在'{‘之前引入分号。请参见http://golang.org/doc/go\_spec.html..。
格式化在某种程度上是语言的一部分,使用gofmt使代码看起来类似,但是,您可以用许多不同的方式格式化代码。
发布于 2011-08-15 14:52:40
Go代码具有必需的支撑样式。同样,程序员不能选择在python中使用大括号,而必须使用缩进。
所需的大括号样式允许分号插入工作,而不需要解析器提前查看下一行(如果您想要为GO代码实现REPL,这是很有用的)
package main
func main();是有效的Go代码,不看下一行,解析器就会假设这就是你想要的,然后被没有连接到你放在它后面的任何东西的块搞糊涂了。
在所有Go代码中使用相同的大括号样式会让代码更容易阅读,同时也避免了关于大括号样式的讨论。
https://stackoverflow.com/questions/7062276
复制相似问题